在 PHP 数组中搜索和替换值

2022-08-30 12:22:42

我正在寻找一些标准的PHP函数来用其他数组的某个值替换,但令人惊讶的是我没有找到任何值,所以我必须编写自己的:

function array_replace_value(&$ar, $value, $replacement)
{
    if (($key = array_search($ar, $value)) !== FALSE) {
        $ar[$key] = $replacement;
    }
}

但我仍然想知道 - 对于这样一件容易的事情,它一定已经有了一些功能!或者可能比我发明的这个解决方案容易得多?

请注意,此函数将仅执行一次替换。我正在寻找现有的解决方案,这些解决方案可以类似地替换单个事件,以及那些可以替换所有事件的解决方案。


答案 1

而不是一个只替换数组中一个值的函数,而是更通用的:array_map

array_map(function ($v) use ($value, $replacement) {
    return $v == $value ? $replacement : $v;
}, $arr);

要使用值数组替换多个值的多次出现 =>替换:

array_map(function ($v) use ($replacement) {
    return isset($replacement[$v]) ? $replacement[$v] : $v;
}, $arr);

若要替换单个值的匹配项,可以按实际操作使用。由于实现非常短,PHP开发人员没有太多理由创建标准函数来执行任务。并不是说创建这样的功能没有意义,如果你发现自己经常需要它。array_search


答案 2

虽然没有一个与示例代码等效的函数,但您可以使用array_keys(带有可选的搜索值参数),array_fillarray_replace来实现相同的目标:

由Tomas编辑:代码不起作用,更正了它:

$ar = array_replace($ar,
    array_fill_keys(
        array_keys($ar, $value),
        $replacement
    )
);