From: eric at austarmetro dot com dot au Operating system: Win XP PHP version: 4.3.3RC1 PHP Bug Type: Scripting Engine problem Bug description: foreach stops with boolen expresion in loop
Description: ------------ The foreach loop exits early and sets the $status variable to "". The problem is fixed by changing $status = $status && status( $b ); to $status &= status( $b ); Hope this is bogus :) I have tried this on WinXP PHP4.3.3RC1 and FREEBSD PHP4.3.1 both give the same result. Eric Reproduce code: --------------- <? function status( $c ) { echo $c; if( $c == 'two' ) return 0; return 1; } $a = array( 'one ','two ','three ','four ' ); $status = 1; foreach( $a as $b ) { $status = $status && status( $b ); } echo " foreach stopped. Status = ".$status; if( isset( $status ) ) echo " set "; else echo "unset"; ?> Expected result: ---------------- onetwothreefour foreach stopped. Status = 0 set Actual result: -------------- onetwo foreach stopped. Status = set -- Edit bug report at http://bugs.php.net/?id=24626&edit=1 -- Try a CVS snapshot (php4): http://bugs.php.net/fix.php?id=24626&r=trysnapshot4 Try a CVS snapshot (php5): http://bugs.php.net/fix.php?id=24626&r=trysnapshot5 Fixed in CVS: http://bugs.php.net/fix.php?id=24626&r=fixedcvs Fixed in release: http://bugs.php.net/fix.php?id=24626&r=alreadyfixed Need backtrace: http://bugs.php.net/fix.php?id=24626&r=needtrace Try newer version: http://bugs.php.net/fix.php?id=24626&r=oldversion Not developer issue: http://bugs.php.net/fix.php?id=24626&r=support Expected behavior: http://bugs.php.net/fix.php?id=24626&r=notwrong Not enough info: http://bugs.php.net/fix.php?id=24626&r=notenoughinfo Submitted twice: http://bugs.php.net/fix.php?id=24626&r=submittedtwice register_globals: http://bugs.php.net/fix.php?id=24626&r=globals PHP 3 support discontinued: http://bugs.php.net/fix.php?id=24626&r=php3 Daylight Savings: http://bugs.php.net/fix.php?id=24626&r=dst IIS Stability: http://bugs.php.net/fix.php?id=24626&r=isapi Install GNU Sed: http://bugs.php.net/fix.php?id=24626&r=gnused