Edit report at http://bugs.php.net/bug.php?id=51682&edit=1
ID: 51682
Comment by: pavel dot lisa at centrum dot cz
Reported by: david at grudl dot com
Summary: (array) casting and numeric keys
Status: Open
Type: Bug
Package: Arrays related
PHP Version: Irrelevant
New Comment:
I'd say there is no error in the way PHP handles this, as you are
accessing
$obj->{'10'} by a string key ( '10' === "10" => true ).
$obj = new stdClass;
$obj->{"10"} = 'as string';
$arr = (array) $obj;
$arr["10"] = 'as string again';
var_dump($arr);
would then produce something like
array(1) {
["10"]=>
string(10) "as string again"
}
Previous Comments:
------------------------------------------------------------------------
[2010-04-28 15:30:25] david at grudl dot com
Description:
------------
Casting to (array) handles numeric keys wrong way:
Test script:
---------------
$obj = new stdClass;
$obj->{'10'} = 'as string';
$arr = (array) $obj;
$arr[10] = 'as integer';
var_dump($arr);
Expected result:
----------------
array(1) {
[10]=>
string(10) "as integer"
}
Actual result:
--------------
array(2) {
["10"]=>
string(9) "as string"
[10]=>
string(10) "as integer"
}
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/bug.php?id=51682&edit=1