Unshift对象引用到数组中

and*_*rew 3 php

所以我可以使用将对象的引用推送到数组中 &

$a = (object) array('a' => 1);
$b[]='test';
$b[] = &$a;
$a->b = 2;
var_dump($b);
Run Code Online (Sandbox Code Playgroud)

结果:

array (size=2)
  0 => string 'test' (length=4)
  1 => &
    object(stdClass)[2]
      public 'a' => int 1
      public 'b' => int 2
Run Code Online (Sandbox Code Playgroud)

但是如何将引用"推"到数组的开头呢?

我试过了

array_unshift($b, &$a);
Run Code Online (Sandbox Code Playgroud)

但是我得到了 Fatal error: Call-time pass-by-reference has been removed

dec*_*eze 5

因为它是一个对象,$a已经(有点)本身就是一个引用*.您根本不需要涉及&引用:

array_unshift($b, $a);
Run Code Online (Sandbox Code Playgroud)

*对象是唯一的,不会在分配时复制.对共享该对象的所有变量都可以看到对象的更改.