我在一个对象中得到了这个部分:
[tcd_old_value] => {"14":{"name":"Nakon radnog vremena","name_changed":false,"added_cc":[],"removed_cc":["4"]},"15":{"name":"Dodatno radno vrijeme","name_changed":false,"added_cc":[],"removed_cc":["4"]}}
在json_decode
之后
$json_object = json_decode(tcd_old_value);
我明白了:
stdClass Object
(
[14] => stdClass Object
(
[name] => Nakon radnog vremena
[name_changed] =>
[added_cc] => Array
(
)
[removed_cc] => Array
(
[0] => 4
)
)
[15] => stdClass Object
(
[name] => Dodatno radno vrijeme
[name_changed] =>
[added_cc] => Array
(
)
[removed_cc] => Array
(
[0] => 4
)
)
)
我正在尝试计算此对象中有多少索引(显然结果应为2)
$result = count($json_object);
echo $result //returns 1
对我在这里做错了什么的见解?
答案 0 :(得分:3)
在这种情况下你不能使用count()
,因为你有一个对象而不是一个数组。
您可以使用json_decode()
的第二个参数将JSON转换为关联数组:
$json_object = json_decode(tcd_old_value, true);
$result = count($json_object);
echo $result; // Now prints 2
请记住$json_object
不再是对象,而是数组。
答案 1 :(得分:1)
根据文件count
返回array_or_countable中的元素数。如果是参数 不是数组,也不是具有已实现的Countable接口的对象, 1将被退回。如果是array_or_countable,则有一个例外 NULL,将返回0。
您可能需要使用
json_decode('json', true);
转换为数组