note 111774 deleted from language.operators.precedence by salathe

From: Date: Wed, 27 Mar 2013 12:28:17 +0000
Subject: note 111774 deleted from language.operators.precedence by salathe
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-194230@lists.php.net to get a copy of this message
Note Submitter: ivegner at yandex dot ru ---- The priority of object member access operator (->) as compared to array member access operator ([]) could be confusing. <?php class SomeClass { public $property = [ 'member' => 'expected', ]; public $indirect = 'totally unexpected'; } $property = [ 'member' => 'indirect', ]; $object = new SomeClass; print $object->$property['member']; // prints 'totally unexpected' ?> One would expect the last line to be parsed left-to-right, that is, <?php ($object->$property)['member'] ?> but it is actually parsed as if it were written <?php $object->{$property['member']} ?> which implies brackets ([]) have a higher priority than an arrow (->). (tested on PHP 5.4.11)

« previous php.notes (#194230) next »