Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> PHP

Tham chiếu (References) trong PHP

Giới thiệu

Trong PHP, References cho phép truy cập cùng một nội dung biến bằng tên khác. Chúng không giống con trỏ (pointer) trong C/C++ vì không thể thực hiện phép toán số học. Trong C/C++, chúng là địa chỉ bộ nhớ thực. Ngược lại, trong PHP chúng là alias (bí danh) trong symbol table. Trong PHP, tên biến và nội dung biến là tách biệt, nên cùng một nội dung có thể có nhiều tên khác nhau. Biến tham chiếu được tạo bằng cách tiền tố dấu & cho biến gốc. Do đó $b = &$a nghĩa là $b là biến tham chiếu của $a.

Gán bằng tham chiếu (Assign By Reference)

Hai biến tham chiếu cùng giá trị

<?php
$var1 = 10;
$var2 = &$var1;
echo "$var1 $var2\n";
$var2 = 20;
echo "$var1 $var2\n";
?>

Kết quả

10 10
20 20

Thay đổi giá trị một biến cũng phản ánh trong biến kia.

Nếu gán, truyền, hoặc trả về biến chưa định nghĩa bằng tham chiếu, nó sẽ được tạo ra. Gán reference cho biến khai báo global trong function, reference chỉ visible trong function. Khi gán giá trị cho biến có reference trong foreach, các reference cũng bị sửa đổi.

Ví dụ foreach với reference

<?php
$arr = [1, 2, 3, 4, 5];
$i = &$ref;
foreach ($arr as $i) echo $i * $i, "\n";
echo "ref = " . $ref;
?>

Kết quả

1
4
9
16
25
ref = 5

Giá trị $ref lưu giá trị phần tử cuối cùng trong mảng.

Phần tử mảng là reference đến biến

<?php
$a = 10; $b = 20; $c = 30;
$arr = array(&$a, &$b, &$c);
for ($i = 0; $i < 3; $i++) $arr[$i]++;
echo "$a $b $c";
?>

Kết quả

11 21 31

Giá trị $a, $b, $c cũng tăng theo.