PHP:计算一个stdClass的对象(PHP: Count a stdClass object)

2019-06-18 17:32发布

我有json_decode创建stdClass的对象,当我运行计数($ OBJ)函数将不会返回正确的号码。 对象具有30度的特性,但对count()函数返回的是说1。

有任何想法吗?

下面是对象中的一个的示例。 (我请求从Twitter每天的趋势信息)。 如果该对象有一个以上的财产,计数($ OBJ)将等于1。

[trends] => stdClass Object
    (
        [2009-08-21 11:05] => Array
            (
                [0] => stdClass Object
                    (
                        [query] => "Follow Friday"
                        [name] => Follow Friday
                    )

                [1] => stdClass Object
                    (
                        [query] => "Inglourious Basterds" OR "Inglorious Basterds"
                        [name] => Inglourious Basterds
                    )

                [2] => stdClass Object
                    (
                        [query] => Inglourious
                        [name] => Inglourious
                    )

                [3] => stdClass Object
                    (
                        [query] => #songsincode
                        [name] => #songsincode
                    )

                [4] => stdClass Object
                    (
                        [query] => #shoutout
                        [name] => #shoutout
                    )

                [5] => stdClass Object
                    (
                        [query] => "District 9"
                        [name] => District 9
                    )

                [6] => stdClass Object
                    (
                        [query] => #howmanypeople
                        [name] => #howmanypeople
                    )

                [7] => stdClass Object
                    (
                        [query] => Ashes OR #ashes
                        [name] => Ashes
                    )

                [8] => stdClass Object
                    (
                        [query] => #youtubefail
                        [name] => #youtubefail
                    )

                [9] => stdClass Object
                    (
                        [query] => TGIF
                        [name] => TGIF
                    )

                [10] => stdClass Object
                    (
                        [query] => #wish09
                        [name] => #wish09
                    )

                [11] => stdClass Object
                    (
                        [query] => #watch
                        [name] => #watch
                    )

                [12] => stdClass Object
                    (
                        [query] => Avatar
                        [name] => Avatar
                    )

                [13] => stdClass Object
                    (
                        [query] => Ramadhan
                        [name] => Ramadhan
                    )

                [14] => stdClass Object
                    (
                        [query] => Goodnight
                        [name] => Goodnight
                    )

                [15] => stdClass Object
                    (
                        [query] => iPhone
                        [name] => iPhone
                    )

                [16] => stdClass Object
                    (
                        [query] => #iranelection
                        [name] => #iranelection
                    )

                [17] => stdClass Object
                    (
                        [query] => Apple
                        [name] => Apple
                    )

                [18] => stdClass Object
                    (
                        [query] => "Usain Bolt"
                        [name] => Usain Bolt
                    )

                [19] => stdClass Object
                    (
                        [query] => H1N1
                        [name] => H1N1
                    )

            )
     )

Answer 1:

的问题是,计数旨在计数索引在一个阵列,而不是属性的对象上,(除非它是一个实现可数接口的自定义对象)。 尝试铸造的对象,像下面,作为一个数组,看是否有帮助。

$total = count((array)$obj);

简单地铸造一个对象作为一个数组并不总是可行的,但作为一个简单的stdClass的对象就应该把工作在这里完成。



Answer 2:

count函数是指对所使用

  1. 数组
  2. 这是从实现可数的接口的类派生的对象

一个stdClass的既不是这些。 较容易的/最快的方式来完成你在做什么之后,

$count = count(get_object_vars($some_std_class_object));

此使用PHP的get_object_vars功能,这将返回一个对象的属性为一个数组。 然后,您可以使用这个数组用PHP的计数功能。



Answer 3:

对象不具有30个楼盘。 它有一个,这是有30个元件的阵列。 你需要一个数组中元素的个数。



Answer 4:

没有什么错计数(在这里),“趋势”是在这种情况下被计数唯一的关键,你可以尝试做:

count($obj->trends);

要么:

count($obj->trends['2009-08-21 11:05']);

或者甚至做:

count($obj, COUNT_RECURSIVE);


Answer 5:

只需使用这

$i=0;
foreach ($object as $key =>$value)
{
$i++;
}

变量$i是按键的数量。



Answer 6:

count()函数可与阵列。 但是,如果你想计算对象的长度,那么你可以使用此方法。

$total = $obj->length;


文章来源: PHP: Count a stdClass object