use*_*ca8 111
它并没有被弃用,也不太可能.例如,这是将一个数组或对象镜像的一部分更改为另一个,而不是复制现有数据的标准方法.
它被称为引用分配,引用手册,"意味着两个变量最终指向相同的数据,没有任何东西被复制到任何地方".
该唯一被弃用与=&被"分配的结果new在通过引用" PHP 5,这可能是任何混淆的来源.new是通过引用自动分配的,因此&是多余的/弃用的$o = &new C;,但不是$o = &$c;.
由于难以搜索,请注意=&(等于&符号)与= &(等于空格符号)相同,并且经常被编写为使其运行到另一个变量中,$x = &$y['z'];或者$x = &$someVar(和号美元符号变量名称).从文档中简化的示例:
$a = 3;
$b = &$a;
$a = 4;
print "$b"; // prints 4
Run Code Online (Sandbox Code Playgroud)
这是一个方便的链接,指向PHP手册中有关" 按引用分配"的详细部分.该页面是参考系列的一部分 - 值得花一点时间阅读整个系列.
Asa*_*aph 25
这是两个不同的运营商.=是你可能知道的任务.并且&意味着变量应该通过引用而不是值来访问.
该符号&在 PHP 中以多种方式使用来表示带有“引用”的操作。PHP 手册中有一个标题为“参考资料解释”的部分,每个 PHP 程序员都应该阅读。
重要的是要理解 PHP 中的引用不是一种数据类型(如指针),而是关于变量如何工作的概念。因此,它没有单一的含义&- 你不应该将其读作“进行引用” - 它只是意味着“这里发生了一些引用-y”。
特别是,该语法$a =& $b也可以写成$a = &$b表示按引用赋值。它将两个变量绑定在一起,以便它们都指向同一条数据。将 视为&修改=而不是修改$b。
一旦您以这种方式将两个变量绑定在一起,它们就可以互换 - 您不能说“$a 指向 $b”或“$b 指向 $a”:
$a =& $b;
$a = 42;
// both $a and $b will be 42
$b = 101;
// both $a and $b will be 101
Run Code Online (Sandbox Code Playgroud)
您还可以将两个以上的变量链接在一起作为引用,并且在赋值的右侧使用哪个现有名称并不重要:
$a =& $b;
$c =& $b;
$d =& $a;
$e =& $c;
// $a, $b, $c, $d, and $e now all point to the same data, interchangeably
Run Code Online (Sandbox Code Playgroud)
但是,如果将相同的变量放在左侧,则会破坏该变量的现有链接,并将其链接到其他内容:
$a =& $b;
// $a and $b are linked together
$a =& $c;
// $a is now linked to $c
// the value of $b doesn't change, but it is not linked to $a or $c
Run Code Online (Sandbox Code Playgroud)
$a =& $b;
$c =& $a;
// $a, $b, and $c are all linked together
unset($a);
// $b and $c are still linked together, but $a is independent
Run Code Online (Sandbox Code Playgroud)
一些描述称为=&“创建或添加到参考集”。如果将其作为函数实现,可能会更好,比如bind($a, $b)强调两个参数都受到操作的影响。
小智 5
$x = &$y['z'];
Run Code Online (Sandbox Code Playgroud)
$y['z']如果不存在则创建效果,并将其设置为null.
这可以防止您可能想要阅读的错误消息.我还没有找到关于此的文件; 据我所知,在5.3中可能是新的.