【问题标题】:Reformat json in a correct way以正确的方式重新格式化 json
【发布时间】:2021-12-07 12:36:26
【问题描述】:

我有这个 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
      },
   
   }
}

【问题讨论】:

    标签: php arrays json foreach decode


    【解决方案1】:

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

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

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

    我想你想要的是:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-07
      • 1970-01-01
      • 2010-12-13
      • 2013-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多