2017-06-25 9 views
0

開発者が私に多次元JSON配列を送信していて、情報を得ることができない要素/配列を持っています。コードとデコードされた配列のスニペットを添付しました。JSONデコードされた配列を反復する

foreach($item['author'] as $sub){ 
    if (is_array($sub)){ 
     foreach($sub as $field => $value){ 
      if ($field == "name"){ 
       $author = $value; 
      } elseif ($field == "Request"){ 
       $request = $value; 
      } elseif ($field == "Phone"){ 
       $phone = $value; 
.... 

配列は次のとおりです。

 Array 
(
    [0] => Array 
     (
      [field] => name 
      [value] => John Smith 
     ) 

    [1] => Array 
     (
      [field] => Request 
      [value] => order 
     ) 

    [2] => Array 
     (
      [field] => Phone 
      [value] => 123-555-1212 
     ) 
.... 

私の$の作者、$要求と$電話が予定されている空。

ご協力いただきありがとうございます。

ジム

+1

$フィールドは、いくつかのタイプミスより – pokeybit

答えて

2

フィールドがキーであり、あなたは内の値を確認したいですそれは

foreach($item['author'] as $sub){ 
     if (is_array($sub)){ 
      foreach($sub as $field => $value){ 
       if ($sub[$field] == "name"){ 
        $author = $sub[value]; 
       } elseif ($sub["$field"] == "Request"){ 
        $request = $sub[value]; 
       } elseif ($sub[$field] == "Phone"){ 
        $phone = $sub[$value]; 
    ` 
+0

その他「フィールド」の「フィールド」ではない値に等しくなり、これは働いていました。 ifステートメントの$ sub [$ field]と変数代入の$ sub ['value']。 ありがとうございました。 – Jim

1

あなたが$valueなく$fieldを使用する必要があります。

$fieldは0,1,2(INDEX)になりますので、..に

だから解決策は次のようになります。

foreach($a as $field => $value){ 
     if ($value['field'] == "name"){ 
      $author = $value['value']; 
     } 
} 
関連する問題