Liên kết trong PHP
Trong PHP có thể gán giá trị của một biến cho một biến khác:
<?php
$num1 = 1;
$num2 = $num1; // gán
echo $num1; // 1
echo $num2; // 1
?>
Khi gán như vậy, một bản sao giá trị của biến đầu tiên sẽ được ghi vào biến mới. Điều này có nghĩa là các biến không liên quan gì với nhau và có thể thay đổi độc lập. Xem ví dụ mã:
<?php
$num1 = 1;
$num2 = $num1;
$num2 = 2;
echo $num1; // 1 - không thay đổi
?>
Tuy nhiên, có thể làm sao để không phải giá trị của biến được sao chép, mà là liên kết tới nó. Trong trường hợp này khi giá trị của một biến thay đổi, giá trị của biến kia cũng sẽ thay đổi.
Để truyền giá trị theo liên kết, cần đặt dấu và (&) trước tên biến:
<?php
$num1 = 1;
$num2 = &$num1; // truyền theo liên kết
?>
Bây giờ việc thay đổi biến đầu tiên sẽ dẫn đến thay đổi biến thứ hai:
<?php
$num1 = 1;
$num2 = &$num1;
$num2 = 2;
echo $num1; // 2 - đã thay đổi
?>
Tương tự, nếu chúng ta thay đổi biến đầu tiên, thì biến thứ hai cũng sẽ thay đổi:
<?php
$num1 = 1;
$num2 = &$num1;
$num1 = 2;
echo $num2; // 2
?>
Hãy cho biết, kết quả thực thi mã sẽ là gì:
<?php
$num1 = 1;
$num2 = $num1;
$num2 = 2;
echo $num1;
echo $num2;
?>
Hãy cho biết, kết quả thực thi mã sẽ là gì:
<?php
$num1 = 1;
$num2 = &$num1;
$num2++;
echo $num1;
echo $num2;
?>
Hãy cho biết, kết quả thực thi mã sẽ là gì:
<?php
$num1 = 1;
$num2 = $num1;
$num1++;
$num2++;
echo $num1;
echo $num2;
?>
Hãy cho biết, kết quả thực thi mã sẽ là gì:
<?php
$num1 = 1;
$num2 = &$num1;
$num1++;
$num2++;
echo $num1;
echo $num2;
?>