Bug #53860 [Bgs]: unexpected behaviour in 'foreach' syntax checking
| From: | soriasoft at gmail dot com | Date: | Fri, 28 Jan 2011 14:25:41 +0000 |
| Subject: | Bug #53860 [Bgs]: unexpected behaviour in 'foreach' syntax checking | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-158277@lists.php.net to get a copy of this message | ||
Edit report at http://bugs.php.net/bug.php?id=53860&edit=1
ID: 53860
User updated by: soriasoft at gmail dot com
Reported by: soriasoft at gmail dot com
Summary: unexpected behaviour in 'foreach' syntax checking
Status: Bogus
Type: Bug
Package: Unknown/Other Function
Operating System: Linux
PHP Version: 5.3.5
Block user comment: N
Private report: N
New Comment:
ok, but, $key and $value(the iteration variables) still "living" out of
the foreach loop code, and make this really hard to debug. In other
languages, this don't happens.
May be for you, is not an error, but some notice of this isn't a bad
idea.
Previous Comments:
------------------------------------------------------------------------
[2011-01-27 22:21:52] rasmus@php.net
There is no syntax error there though.
foreach(...); is a valid loop construct and { expr; } is also a valid
construct
on its own.
------------------------------------------------------------------------
[2011-01-27 21:41:41] soriasoft at gmail dot com
Description:
------------
I found and unexpected behavior in the syntax checking. When you write a
';' after the open brace, the parser doesn't display an error or notice
message, and executes the code with the last element of the array. I
test this in php5.3 and php5.2.
This "innocent" ; is realy hard to debug.
The enviroments:
joac@pepino ~/ReposGcoop $ php -v
PHP 5.3.3 with Suhosin-Patch (cli) (built: Jul 25 2010 12:50:19)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
debdev@jaula:~/www$ php -v
PHP 5.2.6-1+lenny9 with Suhosin-Patch 0.9.6.2 (cli) (built: Aug 4 2010
03:25:57)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies
with Xdebug v2.0.3, Copyright (c) 2002-2007, by Derick Rethans
Test script:
---------------
<?php
function show_array(&$data_array){
foreach ($data_array as $key=>$value);
{
print "$key => $value\n";
if ( is_array( $value ) ){
show_array1( $value );
print "End of nested Array\n";
}
}
};
$evil_array = array (
'item1' => array ( 'item1_1' => array( 'item1_1_1' =>
1,
'item1_1_2' => 2 ),
'item1_2' => array( 'item1_2_1' => 3,),
),
'item2' => '4');
show_array($evil_array);
?>
Output:
joac@pepino ~/ReposGcoop $ php bugphp.php
item2 => 4
Expected result:
----------------
I expect some error or notice for this syntax error.
Actual result:
--------------
joac@pepino ~/ReposGcoop $ php bugphp.php
item2 => 4
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/bug.php?id=53860&edit=1