获取数组中的数组值并存储到变量

时间:2017-07-22 04:36:08

标签: php arrays multidimensional-array

我在数组中有一些数组,我希望得到它的所有值并将其存储在变量中。这是我的数组的结构:

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中循环播放该数组,但我无法获得第二个数组值。这就是我现在所做的事情:

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来获取值。

2 个答案:

答案 0 :(得分:4)

我正在努力完全理解你将这些值作为变量而不是数组的一部分所带来的好处。您仍然可以非常轻松地访问这些值。

无论如何,根据您的评论,问题出现在嵌套数组中。您不需要foreach来访问这些值。

示例:

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

文档:http://php.net/manual/en/language.types.array.php

答案 1 :(得分: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);
  

您现在可以:$ product-> SKU。或$ product->数量或$ Product->名称