2

我试图弄清楚为什么我无法使用以下语句访问跟随数组:

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']);

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

4

3 回答 3

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
}
于 2012-10-10T19:49:18.687 回答
1

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

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

请参阅此处了解更多信息:

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

于 2012-10-10T19:47:03.937 回答
0

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

但你可以reset($thevar)用来获得第一个项目。

或者array_values()

array_values($thevar)[0]

或者,如果您觉得有点矫枉过正,您也可以像这样使用array_keys()和使用该[0]元素来寻址元素:

$thevar[ array_keys($thevar)[0]]
于 2012-10-10T19:43:37.070 回答