gpt4 book ai didi

php - 如何递归搜索和替换未知深度多维 PHP 数组中的值?

转载 作者:行者123 更新时间:2023-12-01 22:19:24 24 4
gpt4 key购买 nike

我正在处理 JSON 字符串。我将其转换为关联数组以查找特定值并在找到特定键时更改这些值 (['content'])。数组的深度总是未知的,并且总是会变化。

这是我写的函数。它采用数组作为参数并通过引用传递它,以便修改变量本身而不是在该函数的局部范围内的副本。

$json_array = json_decode($json_string, true);

function replace_data(&$json_array, $data='REPLACE TEST')
{
foreach($json_array as $key => $value) {
if ($key == 'content' && !is_array($value)) {
$json_array[$key] = $data;

} else {
if (is_array($value)) {
replace_data($value, $data);
}
}
}

}


replace_data($json_array, "test test test");
var_dump($json_array);

我期望发生的情况是,无论在什么深度,每次找到键 ['content'] 时,它都会替换为 $data 参数中指定的值。

但是,当我 var_dump($json_array) 时,这些值没有改变。

我错过了什么?

最佳答案

array_walk_recursive :

function replace_data($json_array, $data = 'REPLACE TEST') {
array_walk_recursive($json_array, function (&$value, $key) use ($data) {
if (!is_array($value) && $key === 'content') {
// $value passed by reference
$value = $data;
}
});
return $json_array;
}

没有引用:

function replace_data($json_array, $data = 'REPLACE TEST') {
foreach ($json_array as $key => $value) {
if (is_array($value)) {
$json_array[$key] = replace_data($value, $data);
} elseif ($key === 'content') {
$json_array[$key] = $data;
}
}
return $json_array;
}

关于php - 如何递归搜索和替换未知深度多维 PHP 数组中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41304919/

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