json_encode返回不确定的结果,数组或对象

时间:2015-04-26 13:28:31

标签: php json

我今天在我的生产代码中发现json_encode的奇怪结果,有时会返回一个数组,如["perl","php","python"],但有时会返回一个对象,如{"0":"perl","2":"python"}。这是一个最小的例子:

$a = array("perl", "php", "python", "something other");
foreach($a as $index => $item) 
{
    if ($item == "something")
        unset($a[$index]);
}
echo json_encode($a);

为什么会这样?

1 个答案:

答案 0 :(得分:2)

foreach循环中,一旦$item == "something"为真,数组键不会连续数字索引(除了最后一次迭代),然后json_encode返回一个对象。如果数组中的所有值都不等于“something”,则返回一个数组。由于数组总是我想要的,我在array_values()之前使用json_encode