Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Pasan PHP melalui Rujukan dalam Gelung `foreach` Mempengaruhi Pengubahsuaian Elemen Tatasusunan?

Bagaimanakah Pasan PHP melalui Rujukan dalam Gelung `foreach` Mempengaruhi Pengubahsuaian Elemen Tatasusunan?

Barbara Streisand
Barbara Streisandasal
2024-12-17 12:42:25777semak imbas

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

PHP Pass by Rujukan di foreach

Pemahaman Pass by Rujukan

PHP mempunyai dua pembolehubah jenis: pembolehubah normal dan pembolehubah rujukan. Menetapkan rujukan pembolehubah kepada pembolehubah lain mencipta pembolehubah rujukan. Pembolehubah menjadi alias untuk pembolehubah yang dirujuk.

Lewati Rujukan dalam Gelung Foreach

Dalam gelung foreach, sintaks foreach ($a sebagai &$v) menghantar rujukan kepada setiap elemen tatasusunan kepada pembolehubah $v. Ini bermakna bahawa sebarang perubahan yang dibuat kepada $v di dalam gelung juga akan mengubah suai elemen tatasusunan asal.

Penjelasan Coretan Kod

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

foreach ($a as &$v) {

}

foreach ($a as $v) {
  echo $v.PHP_EOL;
}

Dalam kod ini:

  1. Tatasusunan $a mengandungi empat elemen: 'sifar', 'satu', 'dua' dan 'tiga'.
  2. Gelung foreach pertama berulang melalui setiap elemen dan menghantar rujukan kepada setiap elemen kepada $v.
  3. Tiada perubahan dibuat kepada $v dalam gelung ini, jadi elemen tatasusunan kekal tidak berubah.
  4. Gelung foreach kedua berulang melalui setiap elemen sekali lagi, tetapi kali ini, pembolehubah normal $v memegang nilai setiap elemen.
  5. Outputnya ialah:
zero
one
two
two

Sebab Output

Selepas gelung foreach pertama, elemen $ a[3] menjadi pembolehubah rujukan kerana ia dirujuk oleh $v. Oleh itu, apabila $v diberikan nilai baharu dalam lelaran berikutnya, $a[3] turut diubah suai.

Memandangkan $a[3] kini merupakan pembolehubah rujukan, menukar nilainya dalam gelung foreach kedua mempengaruhi semua lelaran gelung yang lain. Oleh itu, lelaran terakhir mencetak 'dua' dan bukannya 'tiga'.

Atas ialah kandungan terperinci Bagaimanakah Pasan PHP melalui Rujukan dalam Gelung `foreach` Mempengaruhi Pengubahsuaian Elemen Tatasusunan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn