PHP 4.0 Bug #8409 Updated: in_array acting strange

From: Date: Mon, 25 Dec 2000 00:05:23 +0000
Subject: PHP 4.0 Bug #8409 Updated: in_array acting strange
Groups: php.dev 
Request: Send a blank email to php-dev+get-42232@lists.php.net to get a copy of this message
ID: 8409 Updated by: jmoore Reported By: anil@recoil.org Status: Open Old-Bug Type: Scripting Engine problem Bug Type: Documentation problem Assigned To: Comments: changing bug type.. more suited to a docu problem. Previous Comments: --------------------------------------------------------------------------- [2000-12-24 19:02:01] anil@recoil.org in_array() is acting very strange; here is the script I am using: <? $a = array('1.10','1.12.4.3','1.13.4.2'); var_dump($a); if (in_array('1.1',$a)) echo '1.1 found without strict check'; if (in_array('1.1',$a, true)) echo '1.1 found with strict check'; ?> Output: array(3) { [0]=> string(4) "1.10" [1]=> string(8) "1.12.4.3" [2]=> string(8) "1.13.4.2" } 1.1 found without strict check Now, '1.1' should never be found at all, since its not in the input string array, but it is found! However, looking at the source code reveals an undocumented 'strict' argument, which when set to true, works correctly. Two issues: a) Could this extra parameter please be documented? b) Why on earth does it match them as identical when it's not 'strict'? Do they revert to being evaluated in an integer context (the only way I can think off that 1.10 and 1.1 would be equivalent) --------------------------------------------------------------------------- Full Bug description available at: http://bugs.php.net/?id=8409

« previous php.dev (#42232) next »