我有一个数组设置如下:
$myArray = array();
$myArray[] = "New array item 1";
$myArray[] = "New array item 2";
$myArray[] = "New array item 3";
当我在其上运行json_encode()时,它输出以下内容:
["New array item 1","New array item 2","New array item 3"]
我想要的是函数将索引编码为字符串:
{"0":"New array item 1","1":"New array item 2","2":"New array item 3"}
以后我可以删除第一项而不影响第二项的索引。
有一种简单的方法吗?
答案 0 :(得分:9)
使用JSON_FORCE_OBJECT
:
json_encode( $data, JSON_FORCE_OBJECT );
需要PHP 5.3 +
答案 1 :(得分:4)
不完全是您想要的,但您可以使用JSON_FORCE_OBJECT
选项:
json_encode($myArray, JSON_FORCE_OBJECT);
会产生:
{"0":"New array item 1","1":"New array item 2","2":"New array item 3"}
如果将数组转换为object,则相同:
json_encode((object)$myArray);
可替换地:
$myArray = array(
"0" => "New array item 1",
"2" => "New array item 2",
"3" => "New array item 3"
);
echo json_encode($myArray);
会给出相同的内容:
{"0":"New array item 1","2":"New array item 2","3":"New array item 3"}
答案 2 :(得分:3)
对于PHP< 5.3,使用这种方法:
<?php
$myArray = array();
$myArray[] = "New array item 1";
$myArray[] = "New array item 2";
$myArray[] = "New array item 3";
echo json_encode((object)$myArray); // typecast the array as object
?>