#27964 [Asn->WFx]: foreach() + @ + with references broken

From: Date: Thu, 23 Jun 2005 21:29:42 +0000
Subject: #27964 [Asn->WFx]: foreach() + @ + with references broken
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-80925@lists.php.net to get a copy of this message
ID: 27964 Updated by: andi@php.net Reported By: jeff at opendbms dot com -Status: Assigned +Status: Wont fix Bug Type: Zend Engine 2 problem Operating System: * PHP Version: 5CVS-2005-06-19 Assigned To: dmitry New Comment: Assigning by reference only works with variables and not expressions. As @ starts an expression (as it requires to start and stop error handling and therefore doesn't have a clean variable context) it makes it extremely hard to support. This behavior is quite general in PHP where variables that start with $ have more capabilities than expressions. Sorry... Previous Comments: ------------------------------------------------------------------------ [2005-06-06 12:26:58] sniper@php.net Dmitry, can you look into this? ------------------------------------------------------------------------ [2004-04-12 19:41:33] sniper@php.net # php -r '$array = array(); foreach(@$array as $key => &$value) {}' Fatal error: Cannot create references to elements of a temporary array expression in Command line code on line 1 (remove @ -> no error) # php -r '$array = array(); foreach($array as &$value) {}' Fatal error: Key element cannot be a reference in Command line code on line 1 # php -r '$array = array(); foreach(@$array as &$value) {}' PHP Parse error: parse error, expecting T_STRING' or T_VARIABLE' or `'$'' in Command line code on line 1 ------------------------------------------------------------------------ [2004-04-12 14:32:21] jeff at opendbms dot com Description: ------------ When I run this code: foreach (@$formErrors as &$formError) { I get this: parse error, unexpected '&', expecting T_STRING or T_VARIABLE or '$' Something about using both the @ and the & in the same foreach loop. It works with either one alone, just not both. Reproduce code: --------------- use the foreach on a non-existant array with references, and the @ statement modifier. Expected result: ---------------- Should skip the foreach loop. Actual result: -------------- Doesn't work. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=27964&edit=1

« previous php.bugs (#80925) next »