用php替换数组中的字符串

时间:2011-02-12 08:01:35

标签: php arrays str-replace replace

如何在php中为数组的所有项替换子字符串和其他字符串? 我不想使用循环来做到这一点。在PHP中有预定义的功能吗?

编辑:感谢您的回复,还有一个问题,我怎么能在数组键​​上做到这一点?

6 个答案:

答案 0 :(得分:65)

为什么不在没有循环的情况下使用str_replace

$array = array('foobar', 'foobaz');
$out = str_replace('foo', 'hello', $array);

答案 1 :(得分:17)

$array = array_map(
    function($str) {
        return str_replace('foo', 'bar', $str);
    },
    $array
);

但是array_map只是一个隐藏的循环。为什么不使用真正的?

foreach ($array as &$str) {
    $str = str_replace('foo', 'bar', $str);
}

这更容易。

答案 2 :(得分:5)

这是我发现并成功使用的一个非常好的主意:

function str_replace_json($search, $replace, $subject) 
{
    return json_decode(str_replace($search, $replace, json_encode($subject)), true);
}

对于多维数组也是如此。

如果将“true”更改为“false”,则它将返回一个对象而不是关联数组。

来源:Codelinks

答案 3 :(得分:2)

我不确定这是多么有效,但我想在一个大的多维数组中替换字符串,并且不想遍历所有项目,因为数组结构非常动态。

我首先将json_encode数组转换为字符串

替换我想要的所有字符串(如果它们是由preg_replace编码的非英文字符,则需要使用json_encode

json_decode让阵列恢复。

答案 4 :(得分:1)

function my_replace_array($array,$key,$val){
    for($i=0;$i<count($array);$i++){
        if(is_array($array[$i])){
            $array[$i] = my_replace_array($array[$i],$key,$val);
        }else{
            $array[$i]=str_replace($key,$val,$array[$i]);
        }
    }
    return $array;
}

答案 5 :(得分:0)

使用array_walk_recursive()

function replace_array_recursive( string $needle, string $replace, array &$haystack ){
    array_walk_recursive($haystack,
        function (&$item, $key, $data){
        $item = str_replace( $data['needle'], $data['replace'], $item );
        return $item;
    },
        [ 'needle' => $needle, 'replace' => $replace ]
    );
}