Bug #53130 [Opn->Bgs]: JSON decoded arrays have broken integer keys

From: Date: Fri, 22 Oct 2010 07:02:00 +0000
Subject: Bug #53130 [Opn->Bgs]: JSON decoded arrays have broken integer keys
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-155435@lists.php.net to get a copy of this message
Edit report at http://bugs.php.net/bug.php?id=53130&edit=1 ID: 53130 Updated by: aharvey@php.net Reported by: manchokapitancho at gmail dot com Summary: JSON decoded arrays have broken integer keys -Status: Open +Status: Bogus Type: Bug -Package: Arrays related +Package: JSON related PHP Version: 5.3.3 Block user comment: N New Comment: Besides being invalid JSON, that's an object rather than an array. Object property names generally follow the same rules as variable names, but can be accessed via braced literals like so: <?php $obj = json_decode ('{ "3" : "4", "text" : "5" }'); var_dump($obj->{3}); // outputs string(1) "4" var_dump($obj->{'3'}); // outputs string(1) "4" ?> Not a bug; closing. Previous Comments: ------------------------------------------------------------------------ [2010-10-21 14:50:03] manchokapitancho at gmail dot com Description: ------------ JSON decoded arrays have their integer keys broken. They are present in the array but they can be neither accessed nor found through array_key_exists. Test script: --------------- $obj = json_decode ('{ "3" : "4", "text" : "5" }'); var_dump ($obj); $arr = (array)$obj; var_dump ($arr); var_dump ($arr[3]); var_dump ($arr["text"]); var_dump (array_key_exists (3, $arr)); var_dump (array_key_exists ("text", $arr)); Expected result: ---------------- object(stdClass)#10 (2) { ["3"]=> string(1) "4" ["text"]=> string(1) "5" } array(2) { ["3"]=> string(1) "4" ["text"]=> string(1) "5" } string(1) "4" string(1) "5" bool(true) bool(true) Actual result: -------------- object(stdClass)#10 (2) { ["3"]=> string(1) "4" ["text"]=> string(1) "5" } array(2) { ["3"]=> string(1) "4" ["text"]=> string(1) "5" } NULL string(1) "5" bool(false) bool(true) ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/bug.php?id=53130&edit=1

« previous php.bugs (#155435) next »