1

我是我的 php 文件,我需要创建自己的 Json 数组。

        for($i=1;$i<$arraySize+1;$i++){
            $idJson[$i]=$i.":".$birdIDArray[$i-1];  
        }

        for($i=$arraySize+1 ;$i<$arraySize*2+1; $i++){
            $idJson[$i]=$i.":".$rankArray[$i-($arraySize+1)];
        }

当我使用

打印(json_encode($idJson));

输出:["0:3","1:15","2:3","3:14","4:1","5:2","6:2"]

但我需要这样的输出 ["0":"3","1":"15","2":"3","3":"14","4":"1","5 ":2","6":"2"]

当我要添加“标记

        for($i=1;$i<$arraySize+1;$i++){
            $idJson[$i]=$i.'"'.":".'"'.$birdIDArray[$i-1];  
        }

        for($i=$arraySize+1 ;$i<$arraySize*2+1; $i++){
            $idJson[$i]=$i.'"'.":".'"'.$rankArray[$i-($arraySize+1)];
        }

它像这样打印 ["0:3","1\":\"15","2\":\"3","3\":\"14","4\":\"1" ,"5\":\"2","6\":\"2"]

我怎样才能避免打印这个 \ 标志?

4

1 回答 1

1

我假设你想要一个这样的 JSON对象

{"0":"3", ... }

这里的问题是 Javascript/JSON 区分作为对象的键值对和作为数组的数字索引列表,而 PHP 对这两种事物都使用数组。这json_encode取决于 PHP 数组是否是一个连续数字索引的数组,在这种情况下,您会得到一个 JSON 数组,或者其他任何东西,在这种情况下,您会得到一个 JSON 对象。

您想要的是强制使用 JSON 对象,即使对于连续数字索引的数组也是如此。这里的第一个问题是:为什么?!但是如果你真的确定你想要那个(再次,为什么?!),JSON_FORCE_OBJECTPHP 5.3+ 中有一个标志:

echo json_encode(array("3", "15", "3"), JSON_FORCE_OBJECT);
// {"0":"3","1":"15","2":"3"}

但我要再说一遍,那是毫无意义的。如果您使用像 的常规数组["3","15","3"],则这些元素的键已经隐含0,12. 无需将它们强制为对象键。

于 2013-10-07T10:18:57.613 回答