我有一个示例代码:
$str = array(
'1' => 'abc',
'2' => 'def',
'3' => 'abc'
);
foreach($str as $element) {
$str_rep = str_replace('abc', '123', $str);
}
echo $str_rep;
输出:
$str = array(
'1' => 'abc',
'2' => 'def',
'3' => '123'
);
'1'=>时出错'abc'没有被取代?如何解决?
答案 0 :(得分:1)
更具可读性的方法:
foreach($str as $key => $value) {
$str[$key] = str_replace('abc', '123', $value);
}
建议将$str
替换为$strArray
,原始名称具有误导性。
答案 1 :(得分:0)
尝试:
$str = array(
'1' => 'abc',
'2' => 'def',
'3' => 'abc'
);
foreach($str as &$element) {
$element = str_replace('abc', '123', $element);
}
print_r($str);
我改变你的foreach以通过引用使用值
真正的问题是你每次都在循环中替换你的输出变量($ str_rep)。所以当然它只会输出最后的变化! :)强>
答案 2 :(得分:0)
在foreach
循环中,您并不是指您的价值。试试这个:
foreach($str as $element) {
$str_rep = str_replace('abc', '123', $element);
}
答案 3 :(得分:0)
我刚跑了这个:
<?
$str = array(
'1' => 'abc',
'2' => 'def',
'3' => 'abc'
);
foreach($str as &$element) {
$str_rep = str_replace('abc', '123', $str);
}
var_dump($str_rep);
?>
它似乎工作正常吗?
答案 4 :(得分:0)
试试这个:
foreach($str as $element) {
$str_rep = str_replace('abc', '123', $element);
}