如何从PHP数组中“json_encode()”键?

2022-08-30 22:34:54

我有一个像这样打印的数组

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);

答案 1

您可以通过设置JSON_FORCE_OBJECT选项来强制json_encode使用对象,尽管您正在传递带有数字键的数组:

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}

但是,仅当确实需要对象时,才应执行此操作。


答案 2

请改用以下内容:

json_encode((object)$temp)

这会将数组转换为对象,当 JSON 编码时,将显示键。

如果要存储一系列数据,而不是从数字到另一个数字的映射,则确实应该使用数组。