json_encode()PHP的不同结果

Nis*_*ani 5 php json codeigniter

如果我这样做:

$new_arr = array(
0 => 'keyboard',
1 => 'mouse',
2 => 'computer'
);

print_r(json_encode($new_arr));
Run Code Online (Sandbox Code Playgroud)

输出:

[ "键盘", "鼠标", "计算机"]

但是说我从我的数据库中获取所有"product"表行并执行此操作:

$product_with_id_map = array();
foreach($query as $result) {
$product_with_id_map[$result->id] = $result->name;
}
print_r(json_encode($product_with_id_map));
Run Code Online (Sandbox Code Playgroud)

输出:

{ "0": "键盘", "1": "鼠标", "2": "计算机"}

我真的需要保留数组的键,当我json_encode你能告诉我如何在第一个例子中实现第二个输出吗?

Dan*_*Lee 8

使用选项(自PHP 5.3起):

print_r(json_encode($product_with_id_map, JSON_FORCE_OBJECT));
Run Code Online (Sandbox Code Playgroud)


xda*_*azz 6

将数组转换为对象.

$new_arr = array(
  0 => 'keyboard',
  1 => 'mouse',
  2 => 'computer'
);

print_r(json_encode((object)$new_arr));
// output: {"0":"keyboard","1":"mouse","2":"computer"}
Run Code Online (Sandbox Code Playgroud)

添加: 如果你在javascript中使用这个结果,我建议你使用数组,数组也是javascript中的对象,此外,它为length你提供了更多的方法和属性.