Edit report at http://bugs.php.net/bug.php?id=51781&edit=1
ID: 51781 Updated by: johan...@php.net Reported by: feng_evan at yahoo dot com Summary: array index 0 problem Status: Bogus Type: Bug Package: Arrays related Operating System: windows xp PHP Version: 5.2.13 New Comment: Well people expect that this will work: $list = array('foo', 'bar', 'baz'); $value = $list[$_GET['id']]; And well, the behavior is like that >10 years even if it might be considered bad breaking it is worse. Previous Comments: ------------------------------------------------------------------------ [2010-05-10 17:32:29] feng_evan at yahoo dot com yes,i can see. "If you compare an integer with a string, the string is converted to a number. If you compare two numerical strings, they are compared as integers. These rules also apply to the switch statement. " but,unacceptable intuitively ------------------------------------------------------------------------ [2010-05-10 10:57:52] johan...@php.net Thank you for taking the time to write to us, but this is not a bug. Please double-check the documentation available at http://www.php.net/manual/ and the instructions on how to report a bug at http://bugs.php.net/how-to-report.php numeric indexes are stored as integers, comparing integer 0 with a string not starting with a digit gives true as the string is casted to an integer. Expected, documented, behavior. Won't change. ------------------------------------------------------------------------ [2010-05-10 09:35:52] feng_evan at yahoo dot com Description: ------------ Array index value judgments must use absolute equal? Test script: --------------- $arr = array(); $arr['0'] = 'zero'; $arr['keyword'] = 'keyword'; foreach($arr as $key => $val) { if ($key == 'keyword') { //if ($key === 'keyword') { //ok echo $val."\n"; } } //output:zero keyword ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/bug.php?id=51781&edit=1