4

我有一个数组设置如下:

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

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

是否有捷径可寻?

4

3 回答 3

10

使用JSON_FORCE_OBJECT

json_encode( $data, JSON_FORCE_OBJECT );

需要 PHP 5.3+

于 2012-11-15T09:08:58.477 回答
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"}

如果您将数组转换为对象,则相同:

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"}
于 2012-11-15T09:10:16.280 回答
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

?>
于 2012-11-15T09:18:55.520 回答