Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用动态_Php_Arrays_Multidimensional Array - Fatal编程技术网

Php 使用动态

Php 使用动态,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我试图弄清楚为什么我不能使用以下语句访问以下数组: var_dump($thevar[0]['product_id']); Array ( [d142d425a5487967a914b6579428d64b] => Array ( [product_id] => 253 [variation_id] => [variation] => [quant

我试图弄清楚为什么我不能使用以下语句访问以下数组:

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

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

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

但是你可以用它来买第一件东西

或:

或者,如果您觉得有点过分,也可以使用
[0]
元素来处理如下元素:

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

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

它将返回数组中使用的密钥数组。然后可以使用它访问数组中的特定元素

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


对于这种情况,有几种选择

手动迭代数组 您可以使用
重置
下一步
和/或
每个
在数组上迭代(可能是部分迭代)

例如,要获取第一个项目而不考虑键:

$item = reset($thevar);
对数组重新编制索引 有时,能够以数字形式索引到阵列中是很方便的,而性能上的小损失也不是问题。在这种情况下,可以使用
数组\u值重新编制索引:

$values = array_values($thevar);
$item = $values[0]; // because $values is numerically indexed
用foreach迭代 这不仅适用于单个值,也适用于更多值,但可能会给代码的读者留下错误的印象

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

因此,我实际上需要找出该键是什么,以便对其进行导航。不,您也可以使用
array\u values
(如我所述),但这将创建新的数组。使用
reset()
应该是最快的方法。
foreach($thevar as $item) {
    // do something with $item
}