#47609 [Opn->Bgs]: foreach() fails to compare key properly

From: Date: Tue, 10 Mar 2009 00:22:26 +0000
Subject: #47609 [Opn->Bgs]: foreach() fails to compare key properly
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-134535@lists.php.net to get a copy of this message
ID: 47609 Updated by: kalle@php.net Reported By: sezer@php.net -Status: Open +Status: Bogus Bug Type: Arrays related Operating System: RHEL 5.3 PHP Version: 5.2CVS-2009-03-09 (snap) New Comment: Expected result, see the first example on the comparison operators page: http://www.php.net/manual/en/language.operators.comparison.php Previous Comments: ------------------------------------------------------------------------ [2009-03-10 00:01:38] sezer@php.net Description: ------------ Following script will print '4-FAIL' using php 5.2.9 build and today's snapshot php5.2-200903092130. Following returns true where $k = int(0), which is wrong: if ($k == 'abc') echo "3-FAIL\n"; Also confirmed this is failing on 5.1.6. Reproduce code: --------------- <?php $a = array(4); if ($a[0] != '4') echo "1-FAIL"; if ($a[0] != 4) echo "2-FAIL"; if ($a[0] == 'abc') echo "3-FAIL\n"; foreach ($a as $k => $v) { // $k is ONLY and ALWAYS ZERO (0) var_dump($k); var_dump($v); if ($k == 'abc') echo "4-FAIL\n"; if ($k === 'abc') echo "5-FAIL\n"; if ($v == 'abc') echo "6-FAIL\n"; } Expected result: ---------------- Code should not print anything. Only key is int(0) and only value is int(4) ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=47609&edit=1

« previous php.bugs (#134535) next »