Edit report at http://bugs.php.net/bug.php?id=51915&edit=1

 ID:                 51915
 Updated by:         scott...@php.net
 Reported by:        laruence at yahoo dot com dot cn
 Summary:            numeric string key escaped in type change
-Status:             Open
+Status:             Bogus
 Type:               Feature/Change Request
 Package:            JSON related
 Operating System:   linux
 PHP Version:        5.2.13
 Block user comment: N
 Private report:     N

 New Comment:

When an array is of mixed type or doesn't contain sequential keys it has
to be 

treated as a hash and not as an integer



json_encode() turns the integer keys into strings which it has to do to
be valid 

json.



On json_decode() it see's string keys instead of numeric since this is a
hash 

not an array.



There is nothing unexpected happening here.


Previous Comments:
------------------------------------------------------------------------
[2010-06-07 10:03:41] xiezhenye at gmail dot com

there is an easier way to build such an array.



$obj = new stdClass;

$obj->{'123'} = 1;

$arr = (array) $obj;

var_dump($obj);

------------------------------------------------------------------------
[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

Reply via email to