PHP 4.0 Bug #8409 Updated: in_array acting strange
| From: | derick@php.net | Date: | Sun, 07 Jan 2001 23:32:35 +0000 |
| Subject: | PHP 4.0 Bug #8409 Updated: in_array acting strange | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-43277@lists.php.net to get a copy of this message | ||
ID: 8409
Updated by: derick
Reported By: anil@recoil.org
Old-Status: Open
Status: Closed
Bug Type: Documentation problem
Assigned To:
Comments:
Fixed in the documentation
Previous Comments:
---------------------------------------------------------------------------
[2000-12-24 19:05:23] jmoore@php.net
changing bug type.. more suited to a docu problem.
---------------------------------------------------------------------------
[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