php -str_replace は置換を横断できません

WBOY
リリース: 2016-06-23 13:38:44
オリジナル
1014 人が閲覧しました

次のコードを参照してください
$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;
$data[$k] = str_replace; replace ,$v);//置き換えることはできませんか? ?
// $data[$k] = str_replace(array_keys($arr),$arr,$v);
// $data[$k] = str_replace('l','k',$v); }
}

var_dump($data);
?> arr に移動してそれらを照合し、必要に応じて置き換えます。この場合は、次のように記述します:

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

$data[$k] = str_replace($pattern,$replacment,$v);

この文では、$v が再度コピーされ、$data に置き換えられます。 [$ k]

$data[$k] = str_replace($pattern,$replacment,$data[$k]);

ありがとう、このように書くと置換効果が得られることはわかっていますが、なぜなのか疑問です。上記で使用されています。 foreach 置換が機能しないのはなぜですか?どうしたの? 。

$data[$k] = str_replace($pattern,$replacment,$v);
$data[$k] は、最後の代入の結果を取得する、ループされた代入です。


ありがとう、このように書くことで置換の効果が得られることはわかっていますが、私の疑問は、なぜ上記の foreach による置換が機能しないのかということです。どうしたの? 。

ループ内で $pattern $replacement $data[$k] を出力すると、より明確になるはずです

0 orororororor1 mymymymymy5y2 youyouyouyouyouyou3 whichwhichqhichwhichwhichwhich4 lovekovelovelovrlovelove
ログイン後にコピー


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

foreach ($data as $k => $v) { $v in

は $data[$k] のコピーです

レイヤーループに含まれます
$data[$k] = str_replace($pattern,$replacment, $v); $v は変更されていないため、すべての置換は、最後の置換結果ではなく、元のデータに対して行われます



foreach ($data as $k => &$v) {

と書くと、それが機能することがわかります

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!