繁体   English   中英

用php进行JSON编码将生成数组

[英]JSON encode with php is generating array

我需要从数组生成一个编码的JSON字符串。 但是,当我只是简单地从数组中取消设置一个项目时,整个字符串的结构就会大不相同。

以下面的代码为例:

$temp1 = array();

$temp1[] = array("x" => "aaa", "y" => "bbb");
$temp1[] = array("x" => "ccc", "y" => "ddd");
$temp1[] = array("x" => "eee", "y" => "fff");

$encoded = json_encode($temp1);

echo $encoded;

它将输出:

[{"x":"aaa","y":"bbb"},{"x":"ccc","y":"ddd"},{"x":"eee","y":"fff"}]

当然,这就是我的期望! 现在,请看下面这个非常相似的代码:

$temp1 = array();

$temp1[] = array("x" => "aaa", "y" => "bbb");
$temp1[] = array("x" => "ccc", "y" => "ddd");
$temp1[] = array("x" => "eee", "y" => "fff");

unset($temp1[0]);

$encoded = json_encode($temp1);

echo $encoded;

它将输出

"{"1":{"x":"ccc","y":"ddd"},"2":{"x":"eee","y":"fff"}}"

如何使第二个代码像第一个代码一样工作(在我看来,这是预期的结果,因为从数组中移除和元素的行为不应影响输出编码字符串的结构。

        $temp1 = array();
        $temp1[] = array("x" => "aaa", "y" => "bbb");
        $temp1[] = array("x" => "ccc", "y" => "ddd");
        $temp1[] = array("x" => "eee", "y" => "fff");

        array_splice($temp1,0,1);

        $encoded = json_encode($temp1);
        echo $encoded;

unset将保持索引不变,因此,在使用unset之后,您可以使用array_values “重新计算”数据:

<?php
$temp1 = array();

$temp1[] = array("x" => "aaa", "y" => "bbb");
$temp1[] = array("x" => "ccc", "y" => "ddd");
$temp1[] = array("x" => "eee", "y" => "fff");

unset($temp1[0]);
$temp1 = array_values($temp1);
$encoded = json_encode($temp1);

echo $encoded;
// will output the expected result:[{"x":"ccc","y":"ddd"},{"x":"eee","y":"fff"}]
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM