andrew
andrew

Reputation: 9583

Unshift object reference into array

So I can push a reference of an object into an array using &

$a = (object) array('a' => 1);
$b[]='test';
$b[] = &$a;
$a->b = 2;
var_dump($b);

Result:

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

But how can I "push" the reference into the start of the array?

I tried

array_unshift($b, &$a);

But I got Fatal error: Call-time pass-by-reference has been removed

Upvotes: 3

Views: 275

Answers (1)

deceze
deceze

Reputation: 522451

Since it's an object, $a is already (sort of) a reference in itself*. You do not need to dabble with & references at all:

array_unshift($b, $a);

* Objects are unique and not copied on assignment. Changes to an object will be visible across all variables who share the object.

Upvotes: 5

Related Questions