我试图从MySQL数据库中获取一些值,当使用json_encode()转换为JSON数组时,我得到了一个JSON对象,过了一段时间我发现索引是问题的根本原因
这是我提到的例子
<?php
$array = array(0=>"zero",2=>"two");
$another_array=array(0=>"zero",1=>"one");
print_r(json_encode($array)); // output: {"0":"zero","2":"two"}
print_r(json_encode($another_array)); //output: ["zero","one"]
?>
那是什么原因?
答案 0 :(得分:4)
因为array(0=>"zero",1=>"one")
与array("zero", "one")
相同而且JSON编码器假定后者是一个列表(因为PHP就是这样做的列表)并且无法告诉前者后者。
如果要强制json_encode
将所有数组视为对象,请将JSON_FORCE_OBJECT
作为第二个参数传递:
json_encode(array(0=>"zero",1=>"one"), JSON_FORCE_OBJECT)
// {"0":"zero","1":"one"}
如果您总是想要一个json列表,请在编码之前删除密钥(例如使用array_values()
)。