首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >搜索和替换PHP数组中的值

搜索和替换PHP数组中的值
EN

Stack Overflow用户
提问于 2011-12-29 22:05:26
回答 10查看 107K关注 0票数 33

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

代码语言:javascript
复制
function array_replace_value(&$ar, $value, $replacement)
{
    if (($key = array_search($ar, $value)) !== FALSE) {
        $ar[$key] = $replacement;
    }
}

但我仍然想知道-对于这么简单的事情,肯定已经有了一些函数!或者可能比我发明的这个解决方案简单得多?

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

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2011-12-29 22:09:39

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

由Tomas编辑的:代码不工作,更正它:

代码语言:javascript
复制
$ar = array_replace($ar,
    array_fill_keys(
        array_keys($ar, $value),
        $replacement
    )
);
票数 30
EN

Stack Overflow用户

发布于 2011-12-29 22:19:09

与仅替换数组中出现的一个值的函数不同,这里有更通用的array_map

代码语言:javascript
复制
array_map(function ($v) use ($value, $replacement) {
    return $v == $value ? $replacement : $v;
}, $arr);

要使用值数组=>替换来替换多次出现的多个值,请执行以下操作:

代码语言:javascript
复制
array_map(function ($v) use ($replacement) {
    return isset($replacement[$v]) ? $replacement[$v] : $v;
}, $arr);

要替换一个值的单个匹配项,可以像以前一样使用array_search。因为实现很短,所以PHP开发人员没有太多理由创建一个标准函数来执行任务。这并不是说,如果您发现自己经常需要这样一个函数,那么创建它对您来说就没有意义。

票数 33
EN

Stack Overflow用户

发布于 2015-09-01 08:12:04

如果性能是个问题,可以考虑不在array_map()中创建多个函数。请注意,isset()非常快,并且此解决方案根本不调用任何其他函数。

代码语言:javascript
复制
$replacements = array(
    'search1' => 'replace1',
    'search2' => 'replace2',
    'search3' => 'replace3'
);
foreach ($a as $key => $value) {
    if (isset($replacements[$value])) {
        $a[$key] = $replacements[$value];
    }
}
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8668826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档