用PHP替换数组中的字符串
在PHP中,如何用其他字符串替换数组中所有项的子字符串 我不想用循环来做这件事。在PHP中是否有一个预定义的函数可以做到这一点 如何在数组的键上执行此操作用PHP替换数组中的字符串,php,arrays,str-replace,replace,Php,Arrays,Str Replace,Replace,在PHP中,如何用其他字符串替换数组中所有项的子字符串 我不想用循环来做这件事。在PHP中是否有一个预定义的函数可以做到这一点 如何在数组的键上执行此操作 $array = array_map( function($str) { return str_replace('foo', 'bar', $str); }, $array ); 但这只是一个隐藏的循环。为什么不用真的呢 foreach ($array as &$str) { $str
$array = array_map(
function($str) {
return str_replace('foo', 'bar', $str);
},
$array
);
但这只是一个隐藏的循环。为什么不用真的呢
foreach ($array as &$str) {
$str = str_replace('foo', 'bar', $str);
}
那就容易多了。为什么不直接使用无循环的系统呢
$array = array('foobar', 'foobaz');
$out = str_replace('foo', 'hello', $array);
这是一个非常好的想法,我发现并成功地使用了:
function str_replace_json($search, $replace, $subject)
{
return json_decode(str_replace($search, $replace, json_encode($subject)), true);
}
它也适用于多维数组
如果将“true”更改为“false”,则它将返回一个对象,而不是关联数组
来源:我不确定这是否有效,但我想在一个大的多维数组中替换字符串,并且不想遍历所有项,因为数组结构是非常动态的 我首先将数组编码成一个字符串 替换我想要的所有字符串(如果存在由
json\u encode
编码的非英语字符,则需要使用preg\u Replace
)
json\u解码
以取回数组。函数my\u replace\u数组($array,$key,$val){
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;
}
对于($i=0;$i带数组\u walk\u recursive()
为什么不想使用循环?听起来更像是一时兴起,而不是明智的理由@edit:在数组前后使用array\u flip
,让其他代码保持原样。可能重复的供参考。真正的答案在底部。PHP的str\u replace
已经可以做到这一点。我很奇怪,OP为什么不接受这个。他似乎真的不知道自己在问什么。而且不仅这个答案是not被接受为正确答案,它是我所有答案的底部…(我正在使用active搜索序列)当我尝试使用解码的JSON数组时,我得到一个错误PHP可捕获致命错误:stdClass类的对象无法转换为字符串
我对PHP非常陌生,到目前为止似乎很难编辑数组。@Dennis:JSON\u decode
默认情况下返回一个对象,而不是数组,除非您明确指定需要一个数组堆栈溢出逻辑:将投票最多的答案推到最底部。好的,我尝试了第二个选项,但是在$str之前没有&sign,它就不起作用了。但是为什么&sign,在这种情况下&sign是什么意思?
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 ]
);
}