2017-04-05 124 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>'; 
    } 

}