note 111774 added to language.operators.precedence

From: Date: Wed, 27 Mar 2013 10:56:25 +0000
Subject: note 111774 added to language.operators.precedence
Groups: php.notes 
Request: Send a blank email to php-notes+get-194228@lists.php.net to get a copy of this message
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) ---- Server IP: 69.147.83.199 Probable Submitter: 80.68.252.79 ---- Manual Page -- http://php.net/manual/en/language.operators.precedence.php Edit -- https://master.php.net/note/edit/111774 Del: integrated -- https://master.php.net/note/delete/111774/integrated Del: useless -- https://master.php.net/note/delete/111774/useless Del: bad code -- https://master.php.net/note/delete/111774/bad+code Del: spam -- https://master.php.net/note/delete/111774/spam Del: non-english -- https://master.php.net/note/delete/111774/non-english Del: in docs -- https://master.php.net/note/delete/111774/in+docs Del: other reasons-- https://master.php.net/note/delete/111774 Reject -- https://master.php.net/note/reject/111774 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#194228) next »