简体   繁体   中英

PHP, assigning a value to a variable by reference

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM