array("a1b", "a1b"), "a2" => array("a2b", "a2b"), -6ren">
gpt4 book ai didi

PHP混合关联数组如何在foreach循环中获取值

转载 作者:行者123 更新时间:2023-12-02 03:23:11 26 4
gpt4 key购买 nike

嗯,我有类似的东西

$Arr1 = array("a1" => array("a1b", "a1b"),
"a2" => array("a2b", "a2b"),
"a3",
"a4",
"a5" => array("a5b", "a5b")
);

这意味着“a3”和“a4”是没有值的键。

我需要通过 foreach 循环来获取 $key => $value 对。

应该是检查 isset($value) 但它不起作用。

更新:问题已结束。谢谢大家。正如所写的,没有值的键不是键,而是带有默认整数键的值。因此,如果有人想使用上面的结构,请这样做

 foreach ($Arr1 as $key => $value) { 
if (is_int($key)) {
$key = $value;
$value = null;
}
//use $key and $value
}

最佳答案

数组的每个元素都有一个键。 “a3”和“a4”不是键,它们是具有数字键的元素。如果您对此数组进行var_dump

,请确保这一点
array (size=5)
'a1' =>
array (size=2)
0 => string 'a1b' (length=3)
1 => string 'a1b' (length=3)
'a2' =>
array (size=2)
0 => string 'a2b' (length=3)
1 => string 'a2b' (length=3)
0 => string 'a3' (length=2)
1 => string 'a4' (length=2)
'a5' =>
array (size=2)
0 => string 'a5b' (length=3)
1 => string 'a5b' (length=3)

您可以通过 array_filter 获取带有数字键的元素函数和 key 类型检查(例如使用帮助 is_int 函数)

$arr = array(
"a1" => array("a1b", "a1b"),
"a2" => array("a2b", "a2b"),
"a3",
"a4",
"a5" => array("a5b", "a5b")
);

$newArr = array_filter($arr, function($key) {
return is_int($key);
}, ARRAY_FILTER_USE_KEY);

foreach语句:

$arr = array(
"a1" => array("a1b", "a1b"),
"a2" => array("a2b", "a2b"),
"a3",
"a4",
"a5" => array("a5b", "a5b")
);

$newArr = [];
foreach ($arr as $key => $value) {
if (is_int($key)) {
$newArr[] = $value;
}
}

关于PHP混合关联数组如何在foreach循环中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54197581/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com