首页 > 解决方案 > 附加自定义标签时有效的 json 输出

问题描述

我现有的 php 代码为这段代码提供了一个有效的 json

    echo json_encode($player,JSON_FORCE_OBJECT);

输出

{
  "0": {
    "0": "1.g",
    "1": "d4",
    "2": "3.g",
    "3": "8.g",
    "4": "wc",
    "5": "s.b",
    "6": "r.y"
  },
  "7": {
    "0": "9.y",
    "1": "2.g",
    "2": "2.g",
    "3": "5.g",
    "4": "1.y",
    "5": "7.r",
    "6": "3.b"
  }
}

当我尝试将这段代码用于自定义标签时

$player_no=0;
while($player_no<$no_of_players){
    echo json_encode (['Player '.$player_no=>$player[$player_no]],JSON_FORCE_OBJECT);
    $player_no++;
}

它给出了一个无效的 json

{
    "Player 0": {
        "0": "9.r",
        "1": "4.g",
        "2": "r.g",
        "3": "wc",
        "4": "2.b",
        "5": "5.r",
        "6": "8.g"
    }
}{
    "Player 7": {
        "0": "7.y",
        "1": "6.g",
        "2": "6.y",
        "3": "8.r",
        "4": "5.y",
        "5": "r.y",
        "6": "7.y"
    }
}

可以让我知道为什么它无效以及阅读第二个代码会出现什么问题?需要在 php 服务器端代码中进行哪些更改才能正确有效输出相对于第二个

标签: phpjson

解决方案


您实际上是在输出多个 json 字符串(每个循环一个),而是存储数据并在循环后全部输出...

$player_no=0;
$data = [];
while($player_no<$no_of_players){
    $data['Player '.$player_no] = $player[$player_no];
    $player_no++;
}
echo json_encode($data ,JSON_FORCE_OBJECT))

推荐阅读