count()工作不正常,返回1

时间:2014-06-15 10:18:55

标签: php count json

我在一个对象中得到了这个部分:

[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

对我在这里做错了什么的见解?

2 个答案:

答案 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); 

转换为数组