PHP:计算一个 stdClass 对象

标签 php count stdclass

我有一个从 json_decode 创建的 stdClass 对象,当我运行 count($obj) 函数时,它不会返回正确的数字。该对象有 30 个属性,但 count() 函数的返回值是 1。

有什么想法吗?

以下是其中一个对象的示例。 (我正在从 Twitter 请求每日趋势信息)。如果该对象具有多个属性,则 count($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
                    )

            )
     )

最佳答案

问题在于 count 旨在计算数组中的索引,而不是对象上的属性(除非它是实现 Countable 接口(interface)的自定义对象)。尝试将对象转换为数组,如下所示,看看是否有帮助。

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

简单地将对象转换为数组并不总是有效,但作为一个简单的 stdClass 对象,它应该可以在这里完成工作。

关于PHP:计算一个 stdClass 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1314745/

相关文章:

php - 使用正则表达式检索字符串中特殊字符之间的链接

mysql - 如何使用 Count + Distinct+When 进行查询?

php - 如何在 PHP 中打印 stdClass 对象的属性?

php - 如何在 PHP 中访问以 @ 开头的 stdClass 成员

php - 如何使用 curl 和 PHP 设置自定义请求 header 键?

php - store 函数不将数据保存到数据库

sql - 如何选择记录数,然后按外键对它们进行分组?

php - 用前导 0 填充计数器到 9,然后用 php 删除前导零

php - MySQL 列插入 PHP 数组错误

php - 是否可以在不扩展 PHPUnit_Framework_TestCase 的情况下使用 PHPUnit 断言?