我有一个从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接口的自定义对象)。尝试像下面那样将对象转换为数组,看看是否有帮助。
$total = count((array)$obj);
简单地将对象转换为数组并不总是可行,但是作为一个简单的stdClass对象,它应该可以在这里完成工作。