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

Php 获取数组中数组的值并存储到变量,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我在数组中得到了一些数组,我想得到它的所有值并将其存储在变量中。这是我的阵列的结构: array(5) { ["InventoryID"]=> string(2) "43" ["Price"]=> string(5) "45.36" ["Warehouse"]=> array(2) { ["WID"]=> string(1) "1" [

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

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的代码示例来获取值。

我正在努力完全理解将这些值作为变量而不是数组的一部分有什么好处。您仍然能够非常轻松地访问这些值

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

例如:

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

文档:

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

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

例如:

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

文档:

您可以为此使用递归

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->名称


您可以为此使用递归

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->名称


这首先破坏了阵列的用途。foreach循环的每次迭代都将覆盖最后一组变量,因为名称相同。你最终想要实现什么?您打算如何将这些值作为变量?@NathanDawson是的,我知道它将覆盖最后一个变量,但这没关系,因为在每个循环中,我都会在数据库中插入变量的值。我想知道的是如何获得该数组中第二个数组的值?这首先违背了数组的用途。foreach循环的每次迭代都将覆盖最后一组变量,因为名称相同。你最终想要实现什么?您打算如何将这些值作为变量?@NathanDawson是的,我知道它将覆盖最后一个变量,但这没关系,因为在每个循环中,我都会在数据库中插入变量的值。我想知道的是如何得到数组中第二个数组的值?我不知道这是否很简单。谢谢。我不知道这是否很简单。谢谢