强制PHP json_encode()将索引编码为字符串

时间:2012-11-15 09:05:30

标签: php json

我有一个数组设置如下:

$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"}

以后我可以删除第一项而不影响第二项的索引。

有一种简单的方法吗?

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

?>