我有一个像这样打印的数组
Array ( [0] => 1691864 [1] => 7944458 [2] => 9274078 [3] => 1062072 [4] => 8625335 [5] => 8255371 [6] => 5476104 [7] => 6145446 [8] => 7525604 [9] => 5947143 )
如果我json_encode($thearray)
我得到类似的东西
[1691864,7944458,9274078,1062072,8625335,8255371,5476104,6145446,7525604,5947143]
为什么名称没有编码(例如0,1,2,3等)?我应该如何使它出现在json代码中? 完整的代码在
之下 $ie = 0;
while($ie 10)
{
$genid = rand(1000000,9999999);
$temp[$ie] = $genid ;
$ie++;
}
print_r($temp);
$temp_json = json_encode($temp);
print_r($temp_json);
答案 0 :(得分:45)
您可以强制json_encode
使用对象,尽管您通过设置 JSON_FORCE_OBJECT 选项传递带数字键的数组:
json_encode($thearray, JSON_FORCE_OBJECT)
然后返回的值将是带有数字键的JSON对象:
{"0":1691864,"1":7944458,"2":9274078,"3":1062072,"4":8625335,"5":8255371,"6":5476104,"7":6145446,"8":7525604,"9":5947143}
但是,如果真的需要一个对象,你应该这样做。
答案 1 :(得分:6)
请改用:
json_encode((object)$temp)
这会将数组转换为对象,当进行JSON编码时,它将显示键。
如果要存储一系列数据,而不是从数字到另一个数字的映射,那么你真的应该使用数组。
答案 2 :(得分:0)
因为那些只是数组的索引。如果要为每个元素添加某种名称,则需要使用关联数组。
当你解码那个JSON数组时,虽然它会回到0,1,2,3等等。
答案 3 :(得分:0)
这是定义的行为。您显示的数组是一个非关联的,通常是索引的数组。它的索引是隐式数字。
如果您使用PHP或JavaScript解码数组,则可以使用索引访问元素:
$temp_array = json_decode($temp_json);
echo $temp_array[2]; // 9274078