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
}