
本文旨在提供一种在PHP中动态修改多维数组特定索引值的解决方案。通过递归函数和键名路径解析,我们可以方便地将指定值赋给多维数组中符合特定模式的元素,例如 data.*.content.*.price。本文将详细介绍实现方法,并提供示例代码,帮助开发者理解和应用。
该方案的核心在于使用递归函数 setValue 来遍历多维数组,并根据给定的键名路径找到目标元素并修改其值。defineNewValues 函数则负责接收数组和键值对,并调用 setValue 函数来完成实际的赋值操作。
以下是具体的PHP代码实现:
<?php
function setValue($key, $value, &$array) {
$find_parts = explode(".", $key);
$find = $find_parts[0] ?? null;
if ($find != null) {
if ($find == "*") {
array_shift($find_parts);
foreach ($array as &$sub_array) {
setValue(implode(".", $find_parts), $value, $sub_array);
}
} else {
if (count($find_parts) > 1) {
if (array_key_exists($find, $array)) {
array_shift($find_parts);
setValue(implode(".", $find_parts), $value, $array[$find]);
}
} else {
if (array_key_exists($find, $array)) {
$array[$find] = $value;
}
}
}
}
}
function defineNewValues(&$arr, $keys) {
foreach ($keys as $key => $value) {
setValue($key, $value, $arr);
}
}
// 示例数组
$myArray = [
"data" => [
"a" => [
"content" => [
"aa" => [
"price" => 3,
"profit" => 2,
"other" => 1
],
"ab" => [
"price" => 3,
"profit" => 2,
"other" => 2
]
]
],
"b" => [
"content" => [
"ba" => [
"price" => 3,
"profit" => 2,
"other" => 4
],
"bb" => [
"price" => 3,
"profit" => 2,
"other" => 5
]
]
],
]
];
// 调用函数修改数组
defineNewValues($myArray, [
"data.*.content.*.price" => 0,
"data.*.content.*.profit" => 0,
]);
// 打印修改后的数组
print_r($myArray);
?>setValue($key, $value, &$array) 函数:
立即学习“PHP免费学习笔记(深入)”;
defineNewValues(&$arr, $keys) 函数:
通过使用递归函数和键名路径解析,我们可以方便地在PHP中动态修改多维数组特定索引的值。这种方法灵活、可扩展,适用于各种复杂的数组结构。理解并掌握这种方法,可以有效提高PHP开发效率。
以上就是在PHP中动态修改多维数组特定索引的值的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号