ホームページ > バックエンド開発 > PHPチュートリアル > PHP の「foreach」ループでの参照渡しは配列要素の変更にどのような影響を与えますか?

PHP の「foreach」ループでの参照渡しは配列要素の変更にどのような影響を与えますか?

Barbara Streisand
リリース: 2024-12-17 12:42:25
オリジナル
771 人が閲覧しました

How Does PHP's Pass by Reference in `foreach` Loops Affect Array Element Modification?

foreach での PHP 参照渡し

参照渡しについて理解

PHP には 2 つの変数がありますタイプ: 通常変数と参照変数。変数の参照を別の変数に割り当てると、参照変数が作成されます。変数は、参照される変数のエイリアスになります。

Foreach ループでの参照渡し

foreach ループでは、構文 foreach ($a as &$v)各配列要素への参照を変数 $v に渡します。これは、ループ内で $v に加えられた変更は、元の配列要素も変更することを意味します。

コード スニペットの説明

$a = array ('zero','one','two', 'three');

foreach ($a as &$v) {

}

foreach ($a as $v) {
  echo $v.PHP_EOL;
}
ログイン後にコピー

このコードでは:

  1. 配列 $a には 4 つの要素が含まれています: 'zero'、'one'、'two'、および'three'.
  2. 最初の foreach ループは各要素を反復処理し、各要素への参照を $v に渡します。
  3. このループ内では $v には変更が加えられないため、配列要素は
  4. 2 番目の foreach ループは各要素を再度繰り返しますが、今回は通常の変数 $v が各要素の値を保持します。
  5. 出力は次のようになります:
zero
one
two
two
ログイン後にコピー

出力の理由

最初の foreach ループの後、要素 $ a[3]は$vで参照されているため参照変数になります。したがって、後続の反復で $v に新しい値が割り当てられると、$a[3] も変更されます。

$a[3] は参照変数になっているため、2 番目の foreach ループでその値が変更されます。ループの他のすべての繰り返しに影響します。したがって、最後の反復では「three」ではなく「two」を出力します。

以上がPHP の「foreach」ループでの参照渡しは配列要素の変更にどのような影響を与えますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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