2017-06-23 13 views
0

私は製品データの配列を持っています。配列内には、仕様データを含む入れ子配列があります。私はブロック内のデータを返すことを望み、それぞれの製品をループしてその名前とそのプロパティを表示します。次のようにテストアレイが設定されていますPHP内のネストした配列からのループ内でのループ

$products = [ 
    $product = [ 
     'name' => 'product name 1a', 
     $specification = [ 
      'Unknown Property' => 'value1a', 
      'Unknown Property' => 'value2a', 
      'Unknown Property' => 'value3a', 
      'Unknown Property' => 'value4a', 
     ] 
    ], 
    $product = [ 
     'name' => 'product name 1b', 
     $specification = [ 
      'Unknown Property' => 'value1b', 
      'Unknown Property' => 'value2b', 
      'Unknown Property' => 'value3b', 
     ] 
    ], 
    $product = [ 
     'name' => 'product name 1c', 
     $specification = [ 
      'Unknown Property' => 'value1c', 
      'Unknown Property' => 'value2c', 
      'Unknown Property' => 'value3c', 
      'Unknown Property' => 'value4c', 
     ] 
    ], 
]; 

私が探しています最終的な結果は次のとおりです。

<li> 
    <h4>Product Name 1a</h4> 
    <ul> 
     <li>Unknown Property: value1a</li> 
     <li>Unknown Property: value2a</li> 
     <li>Unknown Property: value3a</li> 
     <li>Unknown Property: value4a</li> 
    </ul> 
</li> 
<li> 
    <h4>Product Name 1b</h4> 
    <ul> 
     <li>Unknown Property: value1b</li> 
     <li>Unknown Property: value2b</li> 
     <li>Unknown Property: value3b</li> 
    </ul> 
</li> 
<li> 
    <h4>Product Name 1c</h4> 
    <ul> 
     <li>Unknown Property: value1c</li> 
     <li>Unknown Property: value2c</li> 
     <li>Unknown Property: value3c</li> 
     <li>Unknown Property: value4c</li> 
    </ul> 
</li> 

私はPHPの配列に新たなんだとループを実行する方法上の任意の参照を見つけることができません私が理解するループの中で。

echo "<ul>"; 
foreach ($products as $product) { 
    echo "<h4>".$product['name']."</h4>"; 
    echo "<ul>"; 
    foreach ($product[0] as $key => $value) { 
     echo "<li>".$value."</li>"; 
    } 
    echo "</ul>"; 
} 

あなたの製品仕様のキーは一意でなければならないことに注意してください - :

答えて

1

まず、あなたの配列定義に少し修正があります。配列の定義は機能していますが、連想配列を使用している場合は、その機能を十分に活用しましょう。

以下のコードでは、配列データ内の変数を削除しましたが、それらは役に立たなかったです。より良いデータを整理するspecificationという名前の新しいキーを作り、ちょうどこのネストされた配列を反復処理するために、今、あなたのケースで

$products = [ 
    [ 
     'name' => 'product name 1a', 
     'specification' => [ 
      'Unknown Property 1' => 'value1a', 
      'Unknown Property 2' => 'value2a', 
      'Unknown Property 3' => 'value3a', 
      'Unknown Property 4' => 'value4a', 
     ] 
    ], 
    [ 
     'name' => 'product name 1b', 
     'specification' => [ 
      'Unknown Property 1' => 'value1b', 
      'Unknown Property 2' => 'value2b', 
      'Unknown Property 3' => 'value3b', 
     ] 
    ], 
    [ 
     'name' => 'product name 1c', 
     'specification' => [ 
      'Unknown Property 1' => 'value1c', 
      'Unknown Property 2' => 'value2c', 
      'Unknown Property 3' => 'value3c', 
      'Unknown Property 4' => 'value4c', 
     ] 
    ], 
]; 

を交換した代わりにUnknown Propertyのユニークなキーを使用し、私が行ったように、我々は2つのforeachのループを使用することができます以下

foreach ($products as $product) { 
    echo "<li>"; 
    echo "<h4>" . $product[ 'name' ] . "</h4>"; 

    if (count($product[ 'specification' ])) { 
     // check if there's anything in specification 
     // then 
     echo "<ul>"; 
     foreach ($product[ 'specification' ] as $property => $value) { 
      echo "<li>" . $property . ":" . $value . "</li>"; 
     } 
     echo "</ul>"; 
    } 
    echo "</li>"; 
} 
+0

完璧に、ポインタのおかげで動作します。私は方法を理解していると思うし、将来これを採用できるはずです。 – sixtillnine

0

はこれを試してみてください。

関連する問題