2017-04-05 20 views
1

私はcURLの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 
         ) 



       ) 

     ) 

) 

私は[shows]NewRegUsersTotRegUsersの値と値を取得し、取得しようとしているがキーワードとエントリ。私はこのコードを使用しました:

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

}