2017-07-22 19 views
0

配列内に配列があり、その値をすべて変数に格納したいと思います。これは私のアレイの構造である:私が欲しいもの配列内の配列の値を取得し、変数に格納

array(5) { ["InventoryID"]=> string(2) "43" 
      ["Price"]=> string(5) "45.36" 
      ["Warehouse"]=> array(2) { ["WID"]=> string(1) "1" 
             ["Quantity"]=> string(1) "12" 
            } 
      ["Name"]=> string(48) "Bottle" 
      ["SKU"]=> string(8) "M123" 
     } 
array(5) { ["InventoryID"]=> string(2) "51" 
      ["Price"]=> string(5) "21.67" 
      ["Warehouse"]=> array(2) { ["WID"]=> string(1) "1" 
             ["Quantity"]=> string(1) "40" 
            } 
      ["Name"]=> string(48) "Glass" 
      ["SKU"]=> string(8) "M124" 
     } 

は、その配列のすべての値を取得し、このような変数に格納することです。私は今までやる

$inventoryid = 43; 
$price = 45.36; 
$wid = 1; 
$quantity = 12; 
$name = 'Bottle'; 
$sku = 'M123'; 

私がループしていますその配列はforeachにありますが、2番目の配列の値を取得できません。これまでのことです:

foreach($array as $row) 
{ 
    $inventoryid = $row['InventoryID']; 
    $price = $row['Price']; 
    $name = $row['Name']; 
    $sku = $row['SKU']; 

    foreach($row['Warehouse'] as $row2) 
    { 
     $wid = $row2['WID']; 
     $quantity = $row2['Quantity']; 
    } 
} 

どうすればいいですか?値を取得するには誰でも私にforeachのコード例を教えてください。

+1

これは最初の配列の目的を破ります。 foreachループの各反復は、名前が同じなので最後の変数セットを上書きします。あなたは最終的に何を達成しようとしていますか?これらの値を変数として何をするつもりですか? –

+0

@ NathanDawsonはい私は最後の変数を上書きすることは知っていますが、各ループでデータベースの変数の値を挿入するので大丈夫です。私が知りたいのは、その配列の中で2番目の配列の値を取得する方法です。 – Antonio

答えて

3

私は、これらの値を配列の一部ではなく変数として持つことにより得られる利益を十分に理解するのに苦労しています。値にはまだ簡単にアクセスできます。

とにかく、あなたのコメントに基づいて、ネストされた配列の問題があるようです。これらの値にアクセスするのに、foreachは必要ありません。

例:

$wid = $row['Warehouse']['WID']; 
$quantity = $row['Warehouse']['Quantity'] 

は、ドキュメント:http://php.net/manual/en/language.types.array.php

+0

私はそれが非常に単純かどうかわかりません。ありがとう。 – Antonio

2

あなたは、このために再帰を使用することができます。

class ProductData 
{ 
    public function walkRecursive($a) { 
     asort($a); //Sort top down 
     foreach($a as $k => $v){ 
      if(is_array($v)){ 
       $this->walkRecursive($v); 
      }else{ 
       $this->{$k} = $v;      
      } 
     } 

     return $this; 
    } 

} 

$array = array(
    "SKU" => "Test1", 
    "Warehouse" => array("WID" => 1, "Quantity" => 2), 
    "Name" => "Product1" 
); 


$d = new ProductData(); 
$product = $d->walkRecursive($array); 

あなたは今行うことができます:$製品 - > SKUを。または$ product-> Quantityまたは$ Product->名前

関連する問題