hel*_*pat 108 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
)
)
)
Run Code Online (Sandbox Code Playgroud)
Ste*_*iec 226
问题是count用于计算数组中的索引,而不是对象上的属性(除非它是实现Countable接口的自定义对象).尝试将对象(如下所示)作为数组投射,并查看是否有帮助.
$total = count((array)$obj);
Run Code Online (Sandbox Code Playgroud)
简单地将对象作为数组进行转换并不总是有效,但作为一个简单的stdClass对象,它应该在这里完成工作.
Ala*_*orm 106
计数功能是用于
stdClass既不是这些.完成你所追求的更简单/最快捷的方法是
$count = count(get_object_vars($some_std_class_object));
Run Code Online (Sandbox Code Playgroud)
这使用PHP的get_object_vars函数,该函数将对象的属性作为数组返回.然后,您可以将此数组与PHP的count函数一起使用.
count()这里没有任何问题,"trend"是在这种情况下被计算的唯一键,您可以尝试:
count($obj->trends);
Run Code Online (Sandbox Code Playgroud)
要么:
count($obj->trends['2009-08-21 11:05']);
Run Code Online (Sandbox Code Playgroud)
或者甚至可能做:
count($obj, COUNT_RECURSIVE);
Run Code Online (Sandbox Code Playgroud)