2016-08-20 4 views
-2

im пытается фильтровать ответ массива JSON, поскольку мне нужна небольшая часть результатов.Извлечение данных из массива JSON с использованием цикла

Мне нужно только получить игроков displayName.

Ниже приведен пояс об обращении к первому игроку, в котором может участвовать до 12 игроков.

мне нужно что-то, что может быть зациклена через и извлечь имена ..

[displayName] => jonhofun 

В настоящее время единственным способом я могу получить данные мне нужно это делать

$player1 = $json11['Response']['data']['entries']['0']['player']['destinyUserInfo']['displayName']; 
$player2 = $json11['Response']['data']['entries']['1']['player']['destinyUserInfo']['displayName']; 
etc... etc... 

Heres оригинальный ответ

Array 
(
[Response] => Array 
    (
     [data] => Array 
      (
       [period] => 2016-08-20T10:16:46Z 
       [activityDetails] => Array 
        (
         [referenceId] => 3156370656 
         [instanceId] => 5370359303 
         [mode] => 12 
         [activityTypeHashOverride] => 3614615911 
        ) 

       [entries] => Array 
        (
         [0] => Array 
          (
           [standing] => 0 
           [score] => Array 
            (
             [basic] => Array 
              (
               [value] => 2190 
               [displayValue] => 2,190 
              ) 

            ) 

           [player] => Array 
            (
             [destinyUserInfo] => Array 
              (
               [iconPath] => /common/destiny_content/icons/d0d3cd4c26aa1a931d46c4bf720856ba.jpg 
               [membershipType] => 2 
               [membershipId] => 4611686018454971653 
               [displayName] => jonhofun 
              ) 

             [characterClass] => Warlock 
             [characterLevel] => 40 
             [lightLevel] => 322 
            ) 
          ) 
        ) 
      ) 
    ) 
) 

Любая помощь будет оценена по достоинству.

+0

Просто используйте для петли и сделано! –

+0

Я не знаю, как это сделать :(Это проблема .. все, что он говорит в Интернете, это $ key => $ value, но как мне сказать, что я хочу получить? – Ashley

ответ

2

Вам нужно пройти через вспомогательный массив в разделе «записи».

foreach ($json11['Response']['data']['entries'] as $entries) { 
    $player_names[] = $entries['player']['destinyUserInfo']['displayname']; 
} 

echo "<pre>"; 
print_r($player_names); // Check all player names 
+0

Спасибо, это решила мою проблему, сдаю в аренду теперь я буду знать в будущем, как писать петли foreach. – Ashley

+0

Добро пожаловать, бутон. –

-1

Это должно быть легко достижимо с for петли, проверьте следующий пример, который должен дать вам представление о том, как поступить:

// totalPlayers will need to be changed to the total number of entries you have 
for ($x = 1; $x < $totalPlayers; $x++) { 
    // You will need to do something with the nextPlayer here before the next iteration of the loop 
    $nextPlayer = $json11['Response']['data']['entries'][$x]['player']['destinyUserInfo']['displayName']; 
} 

Обратите внимание, что жестко закодирован идентификатор игрока из возвращаемых данных заменяются с счетчиком $x от петли for.

+0

Обратите внимание, что OP начинается с 0 –

+0

Это плохая практика, которую нужно использовать вместе с цифровыми клавишами, когда ключи неизвестны. Это может быть до 12, поэтому, если это 5 или 6, он покажет кучу уведомлений и предупреждений. –

+0

Цикл 'foreach' лучше, так как он будет динамически работать с любым количеством записей, независимо от точных значений ключа. – BeetleJuice

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