ホームページ >バックエンド開発 >PHPチュートリアル >Foreach ループで配列値の変更が機能しないのはなぜですか?それを修正するにはどうすればよいですか?

Foreach ループで配列値の変更が機能しないのはなぜですか?それを修正するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-28 06:08:18537ブラウズ

Why Doesn't Modifying Array Values in a Foreach Loop Work, and How Can I Fix It?

Foreach ループを使用した配列値の変更

コードでは、foreach ループを使用して $bizaddarray を反復処理し、それぞれを変更しています。値は、strip_tags、ucwords、および strto lower 関数を使用して取得されます。ただし、後で配列を文字列に変換すると、HTML タグがまだ存在しているようです。これは、foreach ループがデフォルトで配列要素のコピーを作成するため、それらのコピーに加えた変更は元の配列には反映されません。

値を直接変更する

変更を永続的にするには、元の配列の値を直接変更する必要があります。これを実現するには 2 つの方法があります。

方法 1: メモリ参照を使用する

この方法では、& 演算子を使用して元の配列値への参照を取得します。このリファレンスを通じて変更を加えると、元の配列内の対応する要素が直接変更されます。

foreach ($bizaddarray as &$value) {
    $value = strip_tags(ucwords(strtolower($value)));
}
unset($value); // Remove the reference to prevent unintended modifications

方法 2: ソース配列を使用する

この方法では、 $key 変数を使用したソース配列要素。この要素を通じて変更を加えると、元の配列も更新されます。

foreach ($bizaddarray as $key => $value) {
    $bizaddarray[$key] = strip_tags(ucwords(strtolower($value)));
}

これらのメソッドのいずれかを使用すると、HTML タグが配列の値から完全に削除され、文字列に反映されます。変換。

以上がForeach ループで配列値の変更が機能しないのはなぜですか?それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。