PHP向全局值分配函数内另一个全局值的引用

问题描述 投票:2回答:1

[在使用PHP的全局变量和引用时,我遇到了一个问题。我想将一个变量设置为函数中另一个变量的引用。令我惊讶的是,全局变量在函数调用后丢失了其引用。

在下面的代码中,您可以看到函数$a内部获得了值5,但之后它又恢复了其旧值(1)。另一方面,$x保留了在函数内部分配的值。

<?php

$a = 1;
$x = 2;
function test() {
    global $a;
    global $x;

    $a = &$x;
    $x = 5;

    echo PHP_EOL;
    echo $a . PHP_EOL;
    echo $x . PHP_EOL;
}

test();

echo PHP_EOL;
echo $a . PHP_EOL; // $a is 1 here instead of 5
echo $x . PHP_EOL;

$a = &$x;

echo PHP_EOL;
echo $a . PHP_EOL;
echo $x . PHP_EOL;

输出:

5
5

1
5

5
5

为什么在完成功能后$a会失去参考?

php reference global
1个回答
1
投票

正如@Banzay所注意到的,我相信$a = &$x;仅会更改函数范围的变量。您应该使用$GLOBALS来更改函数中的值;

$GLOBALS

function test() { global $a; global $x; $GLOBALS['a'] = &$x; $x = 5; echo PHP_EOL; echo $a . PHP_EOL; echo $x . PHP_EOL; }

Try online!
© www.soinside.com 2019 - 2024. All rights reserved.