php -str_replace は走査して置換できません

WBOY
リリース: 2016-06-13 12:16:06
オリジナル
876 人が閲覧しました

php -str_replace は走査して置換できません
次のコードを参照してください
$data = array('or','my','you','that','love');
$arr = array('l'=>'k','w'=>'q','e'=>'r','t'=>'y','m '= >5);
foreach ($data as $k => $v) {
foreach ($arr as $key => $value) {
$pattern = $key;
$replacment = $value;
$data[$k] = str_replace($pattern,$replacment,$v);//置換できませんか? ?
// $data[$k] = str_replace(array_keys($arr),$arr,$v);
// $data[$k] = str_replace('l','k',$ v);
}
}

var_dump($data);
?>
------ソリューションのアイデア------ ---------------
投稿者が言及した置換が、 arr のデータ内の各文字列に現れる文字と一致することを意味するかどうかはわかりません。一部を交換します。この場合は、次のように記述してください:

<br /><?php<br />$data = array('or','my','you','which','love');<br />$pattern = array('l','w','e','t','m');<br />$arr = array('k','q','r','y',5);<br />$newdata =  str_replace($pattern, $arr, $data);<br />var_dump($newdata);<br />?><br />
ログイン後にコピー

------解決策のアイデア------ - ---
$data[$k] = str_replace($pattern,$replacment,$v);
$v はこの文でも再度コピーされ、$data[$k]< に置き換えられます。 🎜 >$data[$k] = str_replace($pattern,$replacment,$data[$k]);

------解決策のアイデア----------- - ----------
0 or<br />or<br />or<br />or<br />or<br />or<br />1 my<br />my<br />my<br />my<br />my<br />5y<br />2 you<br />you<br />you<br />you<br />you<br />you<br />3 which<br />which<br />qhich<br />which<br />which<br />which<br />4 love<br />kove<br />love<br />lovr<br />love<br />love<br />
ログイン後にコピー

オーナー、これは私が出力したループ結果で、実際には foreach にあります。 str_replace は有効になりましたが、後のものに置き換えられたため、置き換えられるものはないと考えています

------解決策のアイデア----- --- ---foreach ($data as $k =>
$v) { の $v は $data[$k] レイヤーループ内では、
$data[$k] = str_replace($pattern,$replacment,
$v
);$v は変更されていないため、すべての置換は元のデータ、最後の置換結果の
の代わりに、
foreach ($data as $k =>
&
$v) { と記述すると、次のようになります。それは確かにうまくいきました

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート