2015-12-31 2 views
0

Так я пытался считать этот объект массив для возрастов, и ничто не похоже на работу для меня ...Как считать этот массив объектов?

stdClass Object 
(
    [type] => champion 
    [version] => 5.24.2 
    [data] => stdClass Object 
     (
      [Thresh] => stdClass Object 
       (
        [id] => 412 
        [key] => Thresh 
        [name] => Thresh 
        [title] => the Chain Warden 
        [info] => stdClass Object 
         (
          [attack] => 5 
          [defense] => 6 
          [magic] => 6 
          [difficulty] => 7 
         ) 

       ) 

      [Aatrox] => stdClass Object 
       (
        [id] => 266 
        [key] => Aatrox 
        [name] => Aatrox 
        [title] => the Darkin Blade 
        [info] => stdClass Object 
         (
          [attack] => 8 
          [defense] => 4 
          [magic] => 3 
          [difficulty] => 4 
         ) 

       ) 

      [Tryndamere] => stdClass Object 
       (
        [id] => 23 
        [key] => Tryndamere 
        [name] => Tryndamere 
        [title] => the Barbarian King 
        [info] => stdClass Object 
         (
          [attack] => 10 
          [defense] => 5 
          [magic] => 2 
          [difficulty] => 5 
         ) 

       ) 

      [Ezreal] => stdClass Object 
       (
        [id] => 81 
        [key] => Ezreal 
        [name] => Ezreal 
        [title] => the Prodigal Explorer 
        [info] => stdClass Object 
         (
          [attack] => 7 
          [defense] => 2 
          [magic] => 6 
          [difficulty] => 7 
         ) 

       ) 

     ) 

) 

Что я хочу, чтобы рассчитывать длина data.

Участок закрутки:count($array->data) не работает.

Если он считает правильным, он должен вернуть 3. Спасибо заранее!

+3

Это то же самое, как: http://stackoverflow.com/questions/1314745/php -count-an-stdclass-object –

+0

Подождите, что? Лиги чемпионов легенд? : D –

+0

Yeeea, это: P – 131

ответ

2

В вашем случае data является объектом. Брось его в массив:

$count = count((array) $array->data); 

другой способ использует get_object_vars

$count = count(get_object_vars($array->data)); 
+0

Спасибо! работает отлично. Не могли бы найти это, независимо от того, насколько я googled ... – 131

+0

Добро пожаловать! – RomanPerekhrest

1

Не так уж трудно, вы можете сделать это:

$object = [ .... ]; // The object you show above.

function countElements($object) { 
    return count(get_object_vars($object)); 
} 

$count = countElements($object); 

что вы должны получить ответ.

get_object_vars() документация.

1

Используется ниже код:

count((array)$array->data); 

Вместо:

count($array->data); 
1

Просто используйте count((array) $array->data);

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