将稀疏json对象解码为php数组

我可以使用以下命令创建一个稀疏的php数组(或map):

$myarray = array(10=>'hi','test20'=>'howdy');

我想把这个序列化/反序列化为JSON。我可以使用命令序列化它:

$json = json_encode($myarray);

这导致字符串{“10”:“hi”,“test20”:“howdy”}。但是,当我反序列化它并使用命令将其转换为数组:

$mynewarray = (array)json_decode($json);

我似乎失去了任何不具有有效php标识符的密钥的映射。也就是说,mynewarray具有映射’test20’=>’howdy’,但不是10 =>’hi’或’10’=>’hi’。

当使用标准的json_encode / json_decode函数转换到json并从json返回时,有没有办法保留php地图中的数字键?

(我使用PHP版本5.2.10-2ubuntu6.4。)

默认情况下,json_decode返回一个类型为stdClass的对象。您访问成员作为属性(即$ result-> test20)。 10不是属性的有效名称,这就是为什么你失去它。

而不是转换到数组,您可以将第二个参数传递给json_decode,使其返回一个关联数组本身:

$mynewarray = json_decode($json, true);

如果你这样做,$ mynewarray [10]可以正常工作。

http://stackoverflow.com/questions/2484726/decode-sparse-json-object-to-php-array

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:将稀疏json对象解码为php数组