Bug #77614 [Com]: Array: mixed keys problem in foreach loop

From: Date: Wed, 13 Feb 2019 18:08:06 +0000
Subject: Bug #77614 [Com]: Array: mixed keys problem in foreach loop
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-219560@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=77614&edit=1 ID: 77614 Comment by: rtheunissen@php.net Reported by: shorvat at gmail dot com Summary: Array: mixed keys problem in foreach loop Status: Open Type: Bug Package: Arrays related Operating System: Win 10 & Ubuntu server PHP Version: Irrelevant Block user comment: N Private report: N New Comment: This is because "word" == 0 is true. See https://3v4l.org/A66OG Previous Comments: ------------------------------------------------------------------------ [2019-02-13 18:04:16] shorvat at gmail dot com Description: ------------ PHP 7.0.10 & 5.6.25 Key comparation in foreach loop not working as expected when keys are of mixed types (strings and ints) If I use triple-equals operator (===) it works just fine, but it seems it should work with double-equals operator (==) as well. Test script: --------------- $array = array(); $array['word'] = "test 1"; $array['0'] = "test 2"; $array['1'] = "test 3"; foreach($array as $k=>$v) { var_dump($k); if($k == "word") { continue; } print_r($v); } Expected result: ---------------- C:\wamp64\www\tst\array_bug.php:10:string 'word' (length=4) C:\wamp64\www\tst\array_bug.php:10:int 0 test 2 C:\wamp64\www\tst\array_bug.php:10:int 1 test 3 Actual result: -------------- C:\wamp64\www\tst\array_bug.php:10:string 'word' (length=4) C:\wamp64\www\tst\array_bug.php:10:int 0 C:\wamp64\www\tst\array_bug.php:10:int 1 test 3 ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=77614&edit=1

« previous php.bugs (#219560) next »