str_replace()无法在循环foreach中工作?

时间:2011-12-15 09:35:39

标签: php

我有一个示例代码:

$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'没有被取代?如何解决?

5 个答案:

答案 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); 
}