2016-08-20 95 views
-2

即时尝试过滤JSON数组响应,因为我只需要一小部分结果。使用循环提取数据fron 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... 

继承人的原始响应

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']; 
} 

要注意,从返回的数据硬编码的播放器标识被替换与for循环中的计数器$x

+0

请注意,OP从0开始 –

+0

这是一个当密钥不确定时,可以使用数字键的操作很差,它可以达到12,所以如果它是5或6,它会显示一大堆通知和警告 –

+0

一个'foreach'循环是更好的,因为它可以动态地处理有多少条目,而不管确切的关键值。 – BeetleJuice