使用动态导航多维数组

时间:2012-10-10 19:40:40

标签: php arrays multidimensional-array

我正在试图找出为什么我无法使用此语句访问follow数组:

var_dump($thevar[0]['product_id']);

Array
(
    [d142d425a5487967a914b6579428d64b] => Array
        (
            [product_id] => 253
            [variation_id] => 
            [variation] => 
            [quantity] => 1
            [data] => WC_Product Object
                (
                    [id] => 253
                    [product_custom_fields] => Array
                        (
                            [_edit_last] => Array
                                (
                                    [0] => 1
                                )

                            [_edit_lock] => Array
                                (
                                    [0] => 1345655854:1
                                )

                            [_thumbnail_id] => Array
                                (
                                    [0] => 102
                                )

但是,我可以使用动态创建的数组名称访问'product_id':

print_r($thevar['d142d425a5487967a914b6579428d64b']['product_id']);

问题是,我不知道动态名称将会是什么......

3 个答案:

答案 0 :(得分:2)

这种情况有几种选择。

手动遍历数组

您可以使用resetnextkey和/或each来迭代数组(可能部分)。

例如,无论密钥如何都要抓取第一个项目:

$item = reset($thevar);

重新索引数组

有时候能够以数字方式索引数组只是方便,并且小的性能影响不是问题。在这种情况下,您可以使用array_values重新编制索引:

$values = array_values($thevar);
$item = $values[0]; // because $values is numerically indexed

与foreach迭代

这适用于单个值以及它可以工作更多,但它可能会给代码的读者留下错误的印象。

foreach($thevar as $item) {
    // do something with $item
}

答案 1 :(得分:1)

如果数组键是动态的,您可能会发现PHP函数array_keys()很有用。

它将返回数组中使用的键数组。然后,您可以使用它来访问数组中的特定元素。

请点击此处了解更多信息:

http://php.net/manual/en/function.array-keys.php

答案 2 :(得分:0)

因为PHP数组是关联的,所以你必须通过密钥访问它们。

但您可以使用reset($thevar)获取第一项。

array_values()

array_values($thevar)[0]

或者,如果你觉得有点矫枉过正,你也可以使用array_keys()并使用[0]元素来解决这样的元素:

$thevar[ array_keys($thevar)[0]]