我试图在一个动态生成的多维数组中找到一个点,这个数组基于带键的数组。
基本上,我有以下数组:
$arr = [
"something" => [
'something_else' => [
"another_thing" => "boo"
]
],
"something2" => [
'something_elseghf' => [
"another_thingfg" => [
"hi" => "bye"
]
]
],
"info" => [
'something_else2' => [
"another_thingh" => "boo"
]
],
];
现在,我想根据不同数组中的键在数组中设置一个值:
$keyArr = ["something2", 'something_elseghf' "another_thingfg", "hi"];
因此,上面的数组意味着我需要将hi键设置为某个值。如何用这些随机键到达数组的那一部分,注意$keyArr的长度也是动态的。所以我够不着:
$arr[$keyArr[0]][$keyArr[1]][$keyArr[2]][$keyArr[3]] =
希望有人对如何解决这个问题有一个想法!
发布于 2021-02-03 05:53:47
试试这种方法:
$arr = [
"something" => [
'something_else' => [
"another_thing" => "boo"
]
],
"something2" => [
'something_elseghf' => [
"another_thingfg" => [
"hi" => "bye"
]
]
],
"info" => [
'something_else2' => [
"another_thingh" => "boo"
]
],
];
$keyArr = ["something2", 'something_elseghf', "another_thingfg", "hi"];
$cursor = $arr;
foreach ($keyArr as $key) {
$cursor = $cursor[$key];
}
echo $cursor;
威尔回声
bye
更新:
如果要更改多维数组中的值,请使用递归函数,如下所示:
function changeValue($array, $path, $value) {
if (empty($path)) {
return $value;
}
$key = array_shift($path);
$array[$key] = changeValue($array[$key], $path, $value);
return $array;
}
$arr = [
"something" => [
'something_else' => [
"another_thing" => "boo"
]
],
"something2" => [
'something_elseghf' => [
"another_thingfg" => [
"hi" => "bye"
]
]
],
"info" => [
'something_else2' => [
"another_thingh" => "boo"
]
],
];
$keyArr = ["something2", 'something_elseghf', "another_thingfg", "hi"];
$changedArray = changeValue($arr, $keyArr, 'New value!');
print_r($changedArray);
威尔输出
Array
(
[something] => Array
(
[something_else] => Array
(
[another_thing] => boo
)
)
[something2] => Array
(
[something_elseghf] => Array
(
[another_thingfg] => Array
(
[hi] => New value!
)
)
)
[info] => Array
(
[something_else2] => Array
(
[another_thingh] => boo
)
)
)
https://stackoverflow.com/questions/66028831
复制相似问题