使用php进行JSON编码正在生成数组

使用php进行JSON编码正在生成数组,php,json,Php,Json,我需要从数组生成一个编码的JSON字符串。但是,当我简单地从数组中取消设置一个项时,整个字符串的结构会变得非常不同 以该代码为例: $temp1 = array(); $temp1[] = array("x" => "aaa", "y" => "bbb"); $temp1[] = array("x" => "ccc", "y" => "ddd"); $temp1[] = array("x" => "eee", "y" => "fff"); $encoded

我需要从数组生成一个编码的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}

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

unset将保持索引不变,因此,在使用unset后,可以使用array\u值重新计算数据:

        $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;

数组_值正是我应该使用的!它工作得很完美,塔什克!您的代码可以工作,但数组_值是一种更通用、更好的方法。无论如何,谢谢,您的解决方案运行良好:
<?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"}]
?>