Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
强制PHP json_encode()将索引编码为字符串_Php_Json - Fatal编程技术网

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

强制PHP json_encode()将索引编码为字符串,php,json,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 ar

我的阵列设置如下所示:

$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"}
因此,稍后我可以删除第一项,而不影响第二项的索引


有没有一种简单的方法可以做到这一点?

使用
JSON\u FORCE\u OBJECT

json_encode( $data, JSON_FORCE_OBJECT );

需要的PHP 5.3+

并非您想要的,但您可以使用
JSON\u FORCE\u 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"}

对于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

?>


没有其他办法了吗?我想把它当作一个数组。@bbeckford你什么意思?你仍然拥有原始数组,它没有变异或移除。例如,我不能这样做,是吗$decodedArray=json_decode(“{”0:“新数组项1”,“1:“新数组项2”,“2:“新数组项3”}”)$decodedArray[]=“新阵列项目4”;json_encode($decodedArray,json_FORCE_OBJECT)@bbeckford如果您计划在JavaScript中使用这个数组,最好知道语法无论如何都不允许使用具有此类索引的数组。您将获得一个
SyntaxError:Unexpected标记:
@bbeckford您应该将
true
作为第二个参数传递给
json\u decode
这仅在索引不连续时有效。“对数组进行编码时,如果键不是从0开始的连续数字序列,则所有键都被编码为字符串,并为每个键值对显式指定。”@morgar:请再次阅读手册。它适用于所有情况,因为这是
JSON\u FORCE\u OBJECT
的目标。5.3发布日期是2009年6月30日,那么这是什么理由呢?