以正确的方式重新格式化 json

Reformat json in a correct way

我有这个 php 代码,因为我试图在我的 php 项目中执行一个特定的功能,我编写了正确的实现代码,但我 运行 遇到了一个小问题。

                <?php echo '<script type="text/javascript">';

                $data = array(
                    'base' => 'USD',
                    'alter' => 'ETH',
                    'data' => array()
                );

                foreach ($cryptos as $row) {
                    $sy = $row["symbol"];
                    $data['data'][] = array(
                       "$sy"  => [
                            "rate" => 1.552000000000000,
                            "min" => 1.0077600000000000,
                            "max" => 10.077600000000000,
                            "code" => $row["symbol"],
                            "dp" => 8

                        ],

                    );
                }
                print_r("var fxCur = " . json_encode($data));

运行 上面的代码我在下面得到了这个结果,这是预期的结果,但我想在 data

之间省略 []
{
   "base":"USD",
   "alter":"ETH",
   "data":[
      {
         "BTC":{
            "rate": 1.552000000000000,
            "min": 1.0077600000000000,
            "max": 10.077600000000000,
            "code":"BTC",
            "dp":8
         }
      },
      {
         "ETH":{
            "rate": 1.552000000000000,
            "min": 1.0077600000000000,
            "max": 10.077600000000000,
            "code":"ETH",
            "dp":8
         }
      }
   ]
}

但实际上我想要这个结果

{
   "base":"USD",
   "alter":"ETH",
   "data":{
      "BTC":{
          "rate": 1.552000000000000,
          "min": 1.0077600000000000,
          "max": 10.077600000000000,
         "code":"BTC",
         "dp":8
      },
      "ETH":{
          "rate": 1.552000000000000,
          "min": 1.0077600000000000,
          "max": 10.077600000000000,
         "code":"ETH",
         "dp":8
      },
   
   }
}

您是在告诉它以这种方式构建数据结构。

$data['data'][] = array(
  "$sy"  => [
    ...
  ]
);

该行表示“在下一个整数索引处将一个元素附加到 $data['data'] 并将其设置为等于数组,例如 [ "BTC" => [ ... ]]

我想你想要的是:

$data['data'][$sy] = [
    "rate" => 1.552000000000000,
    "min" => 1.0077600000000000,
    "max" => 10.077600000000000,
    "code" => $row["symbol"],
    "dp" => 8
];