Description:
------------
I believe '2147483647' (= 2^31 - 1) should be the standard representation of a valid integer, but using the string form as an array key stores the key as a string, not an integer. The integer key 2147483647 can be used separately to refer to a different value, and both are stored. See repro code below:
Note: this bug is admittedly duplicate of bug #13407, but the bug still exists, and I fail to understand why the original bug was marked bogus. Thanks for your time.
Reproduce code:
---------------
$v = array('2147483647' => 'b', '2147483646' => 'c', 2147483647 => 'd');
var_dump($v);
Expected result:
----------------
array(2) {
[2147483647]=>
string(1) "d"
[2147483646]=>
string(1) "c"
}
Actual result:
--------------
array(3) {
["2147483647"]=>
string(1) "b"
[2147483646]=>
string(1) "c"
[2147483647]=>
string(1) "d"
}

This bug has been fixed in CVS.
Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
Thank you for the report, and for helping us make PHP better.
Just fixed in 5.3 for now.