Wednesday, June 12, 2019

What does [] mean when reading from a PHP array?



I've been writing a parser for PHP and while messing around with some third-party code, I run into a weird case regarding the [] operator.




Normally, [] is used without a key on the left side of an assignment meaning "add as the last element".



$a = array();
$a[] = 1;


will add 1 in the end of array $a.



In the aforementioned code though, I saw a line like this:




$r =& $a[];


When I tried to remove the &, I got a rather expected fatal error:




Fatal error: Cannot use [] for reading





With the & though, PHP does not complain at all. What is the meaning of the expression



& $a[];


?


Answer



The syntax means "use a reference to $a[]" or a reference to the newest created array element.




$a=array( );
$a[] = "a";
$a[] = "b";

print_r($a);

$r =& $a[];

print_r($a);


$r = "c";

print_r($a);


produces:



Array
(
[0] => a

[1] => b
)
Array
(
[0] => a
[1] => b
[2] =>
)
Array
(

[0] => a
[1] => b
[2] => c
)

No comments:

Post a Comment

plot explanation - Why did Peaches' mom hang on the tree? - Movies & TV

In the middle of the movie Ice Age: Continental Drift Peaches' mom asked Peaches to go to sleep. Then, she hung on the tree. This parti...