2011-12-15 11 views
0

私はサンプルコードがあります: '1' => 'ABC' を交換していないときstr_replce()はループforeachで動作していませんか?

$str = array(
    '1' => 'abc', 
    '2' => 'def', 
    '3' => '123' 
); 

エラー:

$str = array(
    '1' => 'abc', 
    '2' => 'def', 
    '3' => 'abc' 
); 
foreach($str as $element) { 
$str_rep = str_replace('abc', '123', $str); 
} 
echo $str_rep; 

OUTPUTを?それを修正するには?

答えて

0

試してみてください。

私は参照

本当の問題は、あなたの出力変数($ str_rep)ループ内の各時間を交換していたことで値を使用するようにするforeachを変更

$str = array( '1' => 'abc', '2' => 'def', '3' => 'abc' ); foreach($str as &$element) { $element = str_replace('abc', '123', $element); } print_r($str); 

。もちろん、最後の変更だけが出力されます! :)

0

foreachループでは、あなたの価値を参照していません。これを試してみてください:

foreach($str as $element) { 
    $str_rep = str_replace('abc', '123', $element); 
} 
0

私はちょうどこの走っ:

<? 

$str = array(
    '1' => 'abc', 
    '2' => 'def', 
    '3' => 'abc' 
); 
foreach($str as &$element) { 
$str_rep = str_replace('abc', '123', $str); 
} 
var_dump($str_rep); 
?> 

をそして、正常に動作するようですか?

1

より読みアプローチ:

foreach($str as $key => $value) { 
    $str[$key] = str_replace('abc', '123', $value); 
} 

は、元の名前が誤解を招くおそれがあり、$strArrayようなもので$strを置き換えるために提案します。

0

これを試してみてください。

foreach($str as $element) { 
$str_rep = str_replace('abc', '123', $element); 
} 
関連する問題