2017-04-05 66 views
1

我有一个从卷曲API来到这个多维数组:PHP的多维数组提取

Array 
(
    [status] => 200 
    [message] => Success 
    [info] => Array 
     (
      [NewRegUsers] => 0 
      [TotRegUsers] => 6 
      [shows] => Array 
       (
        [0] => Array 
         (
          [keyword] => BANANA 
          [entries] => 1 
         ) 

        [1] => Array 
         (
          [keyword] => CHRISTMAS 
          [entries] => 1 
         ) 

        [2] => Array 
         (
          [keyword] => CONCERT 
          [entries] => 1 
         ) 

        [3] => Array 
         (
          [keyword] => EXTRA 
          [entries] => 1 
         ) 



       ) 

     ) 

) 

我试图得到NewRegUsersTotRegUsers值和值[shows]并获得关键字和条目。我用这个代码:

foreach($data['info'] as $value) 
    { 
     foreach ($value as $item){ 

      $shows .= ' <tr> 
         <td class="col1">'.$x.'. '.$item['keyword'].'</th> 
         <td>'.$item['entries'].'</td> 
        </tr>'; 
      $x ++ ; 
     } 

    } 

我仍然对数组感到困惑。 :(

+0

的可能的复制[?我怎样才能访问数组/对象(http://stackoverflow.com/questions/30680938/how-can-i-access-an -array-object) –

回答

1

你想要的数据是嵌套2个级别深度有关需要2个密钥如下所示:。$data['info']['shows']

这使你阵列的另一个数组,它可以迭代使用普通foreach

我经常发现这样的事情是比较容易,如果你:

  • 创建一个数组取物品,并在年底
  • 使用加入阵列插入您的数据,因为它更具可读性。

下面是它如何工作的例子:

$shows=array(); 
$tr='<tr><td class="col1">%s</th><td>%s</td></tr>'; 
foreach($data['info']['shows'] as $item) { 
    $shows[]=sprintf($tr,$item['keyword'],$item['keyword']); 
} 
$shows=implode('',$shows); 
+0

这段代码工作正常。但我将如何获得[NewRegUsers]和[TotRegUsers]? –

+0

已经有了它。谢谢! –

0

你几乎拥有了。我会做这种方式:

foreach($data['info'] as $info) 
{ 
    $NewRegUsers = $info['NewRegUsers']; 
    $TotRegUsers = $info['TotRegUsers']; 

    foreach ($info['shows'] as $k => $show){ 
     $shows .= ' <tr> 
         <td class="col1">'.$k.'. '.$show['keyword'].'</th> 
         <td>'.$show['entries'].'</td> 
        </tr>'; 
    } 

}