a friend asked me to analyze the output of the following simple lines. I defined a variable x that has the string PHP , and a table called a which is a reference to x , so any changes to one of them will affect the other. First, I assigned the value "Mysql" to the first element of a , the value of x changed too. But in the second affectation, when the second element of the table a got the value "test" , the value of the variable x didn't change, any explanation?
<?php
$x = "PHP";
$a[] = &$x;
$a[0] = "MySql";
echo $a[0]; // Output: MySql
echo $x; // Output: MySql
$a[1] = "test";
echo $a[1]; // Output: test
echo $x; // Output: MySql
// why last output is mySql and not test?
?>
The reference to $x
is never in $a[1]
. It is only in $a[0]
and therefore won't change when you assign 'test' to $a[1]
.
$a[] = &$x;
is just adding &$x
to the end of the array $a
. $a
at that point in your code is empty, so you are assigning &$x
to the first index of $a
( $a[0]
)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.