2016-08-27 2 views
0

У меня есть массив JSON, и у меня есть 3 объекта JSON. Я хочу подсчитать количество объектов, которое равно 3. но оно дает мне 1. Если я не добавлю ключ «like», то он работает. но после его добавления он не работает.Подсчитать количество объектов в JSON PHP?

$JSON = '{"like":[' 
      . '{"username":"suraj","password":"abc"},' 
      . '{"username":"don","password":"abc"},' 
      . '{"username":"rana","password":"abc"}' 
      . ']}'; 


    $jsonInPHP = json_decode($JSON); 
    echo count($jsonInPHP); 
+0

'графа ($ jsonInPHP [ 'как ']) 'или' count ($ jsonInPHP-> like) ' –

+0

$ jsonInPHP = json_decode ($ JSON, true); количество эхо ($ jsonInPHP ['like']); – JYoThI

+0

Примечание. Если вы установите второй параметр как «истинный», он делает его ассоциативным массивом. – Ekin

ответ

1

Ваш json представляет собой объект, а не массив. В вашем объекте у вас есть как собственность, которая является массивом, так что вам нужно исправить как этого

count($jsonInPHP->like); 
1

Это происходит потому, что после того, как JSON декодирования вашей строки вы получите объект с одним свойством (like) (или массивом с одним элементом с ключом like).

В обоих случаях вы хотите подсчитать размер этого свойства (или ключ), который является:

// if $jsonInPHP is array 
echo count($jsonInPHP['like']); 
// if $jsonInPHP is object 
echo count($jsonInPHP->like); 
+0

ваш второй вариант. ,,, работал, 1-й не –

1

передать второй параметр true как этот

$jsonInPHP = json_decode($JSON,true); 
    echo count($jsonInPHP['like']); 
+0

добавление true дает ошибку, хотя я получил решение ,, count ($ jsonInPHP-> like); –

Смежные вопросы