kur*_*rma 6 php pointers global
为什么PHP不能将尖头值保留为全局变量?
<?php
$a = array();
$a[] = 'works';
function myfunc () {
global $a, $b ,$c;
$b = $a[0];
$c = &$a[0];
}
myfunc();
echo ' $b '.$b; //works
echo ', $c '.$c; //fails
?>
Run Code Online (Sandbox Code Playgroud)
小智 4
来自PHP 手册:
警告
如果将引用分配给在函数内声明为全局的变量,则该引用仅在函数内部可见。您可以使用 $GLOBALS 数组来避免这种情况。
...
考虑全局 $var; 作为 $var =& $GLOBALS['var']; 的快捷方式。因此,为 $var 分配另一个引用只会更改局部变量的引用。
<?php
$a=array();
$a[]='works';
function myfunc () {
global $a, $b ,$c;
$b= $a[0];
$c=&$a[0];
$GLOBALS['d'] = &$a[0];
}
myfunc();
echo ' $b '.$b."<br>"; //works
echo ', $c '.$c."<br>"; //fails
echo ', $d '.$d."<br>"; //works
?>
Run Code Online (Sandbox Code Playgroud)