Edit report at http://bugs.php.net/bug.php?id=51915&edit=1
ID: 51915
Comment by: xiezhenye at gmail dot com
Reported by: laruence at yahoo dot com dot cn
Summary: numeric string key escaped in type change
Status: Open
Type: Feature/Change Request
Package: Scripting Engine problem
Operating System: linux
PHP Version: 5.2.13
New Comment:
there is an easier way to build such an array.
$obj = new stdClass;
$obj->{'123'} = 1;
$arr = (array) $obj;
var_dump($obj);
Previous Comments:
------------------------------------------------------------------------
[2010-05-27 04:15:01] laruence at yahoo dot com dot cn
change bug to Feature , nhancement
------------------------------------------------------------------------
[2010-05-26 08:30:18] laruence at yahoo dot com dot cn
Description:
------------
php treat numeric string key as interge,
bug sometimes there is some exception.
for example:
while change a std object to array, numeric string key doesn't cast to
number
Test script:
---------------
<?php
$data = array(
123 => 'laruence',
"03"=> 'baidu',
);
$value = json_encode($data);
$obj = json_decode($value);
$arr = (array)$obj;
var_dump($arr);
?>
Expected result:
----------------
array(2) {
[123]=>
string(8) "laruence"
["03"]=>
string(5) "baidu"
}
Actual result:
--------------
array(2) {
["123"]=>
string(8) "laruence"
["03"]=>
string(5) "baidu"
}
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/bug.php?id=51915&edit=1