3 回答

TA贡献1816条经验 获得超4个赞
您正在观察此行为,因为您的数组不是顺序的-它具有键0和2,但没有1键。
仅具有数字索引是不够的。json_encode仅当您的PHP数组是顺序的时,即如果其键为0、1、2、3,...时,才会将PHP数组编码为JSON数组。
您可以使用array_values函数顺序地对数组重新索引以获得所需的行为。例如,以下代码在您的用例中可以成功运行:
echo json_encode(array_values($input)).

TA贡献1820条经验 获得超9个赞
Array中仅JSON是索引数组,因此您尝试获取的结构无效的Json / Javascript。
PHP关联数组是JSON中的对象,因此,除非不需要索引,否则无法进行此类转换。
如果要获得这样的结构,可以执行以下操作:
$indexedOnly = array();
foreach ($associative as $row) {
$indexedOnly[] = array_values($row);
}
json_encode($indexedOnly);
将返回类似:
[
[0, "name1", "n1"],
[1, "name2", "n2"],
]

TA贡献1936条经验 获得超6个赞
尝试这个,
<?php
$arr1=array('result1'=>'abcd','result2'=>'efg');
$arr2=array('result1'=>'hijk','result2'=>'lmn');
$arr3=array($arr1,$arr2);
print (json_encode($arr3));
?>
- 3 回答
- 0 关注
- 429 浏览
添加回答
举报