简体   繁体   English

Php json_encode 数组和 object 数组

[英]Php json_encode array and object array

I need to create a json with this format:我需要使用以下格式创建 json:

{
  "reservs": [
    {
      "ResId": "58",
      "time": "2020-05-15 19:41:50",
      "boxEntering": null,
      "boxClosing": null,
      "active": "1",
      "UserId": "29",
      "BoxId": "4",
      "boxPlace": null,
      "box": {
        "id": "4",
        "Nom": "Hortillonages",
        "Lat": "49.8953",
        "Lng": "2.31034",
        "place": "0",
        "placeMax": "9"
      }
    }
  ]
}

in entries, a $header who check the user token(not use for my problem) $table the table returned from PDO::FETCHASSOC from sql SELECT request My php code: in entries, a $header who check the user token(not use for my problem) $table the table returned from PDO::FETCHASSOC from sql SELECT request My php code:

function generateJson($table, headerChecker $header){
    $final = array();
    foreach ($table as $item) {
        $box = array(
            "id" => $item["id"],
            "Nom" => $item["Nom"],
            "Lat" => $item["Lat"],
            "Lng" => $item["Lng"],
            "place" => $item["place"],
            "placeMax" => $item["placeMax"]
        );
        $reserv = array(
            "ResId" => $item["ResId"],
            "time" => $item["time"],
            "boxEntering" => $item["boxEntering"],
            "boxClosing" => $item["boxClosing"],
            "active" => $item["active"],
            "UserId" => $item["UserId"],
            "BoxId" => $item["BoxId"],
            "boxPlace" => $item["boxPlace"],
        );
        $reserv["box"] = $box;
        array_merge($final,$reserv);
    }
    $arr = array("reservs" => $table);
    $header->tokenJson($arr);
    echo json_encode($arr);
}

I have this result我有这个结果

{"reservs": [
        {
            "ResId": "58",
            "time": "2020-05-15 19:41:50",
            "boxEntering": null,
            "boxClosing": null,
            "active": "1",
            "UserId": "29",
            "BoxId": "4",
            "boxPlace": null,
            "id": "4",
            "Nom": "Hortillonages",
            "Lat": "49.8953",
            "Lng": "2.31034",
            "place": "0",
            "placeMax": "9",
            "QRID": "",
            "boxToken": ""
        }]
}

I think the Json format eror is in the array_merge function.我认为 Json 格式错误在 array_merge function 中。 What add array function can I use to not remove the Box object我可以使用什么添加数组 function 来不删除框 object

Your problem is that you are not assigning the return of array_merge and using the wrong variable $table .您的问题是您没有分配array_merge的返回并使用错误的变量$table Just dynamically append to $final :只是动态 append 到$final

foreach ($table as $item) {
    // this all appears good
    //
    $reserv["box"] = $box;
    $final[] = $reserv;             // append to $final
}
$arr = array("reservs" => $final);  // use $final
$header->tokenJson($arr);
echo json_encode($arr);

Merge the new $reserv into $final and assign it to $final , then use $final .将新的$reserv合并到$final并将其分配给$final ,然后使用$final

Try this one试试这个

function generateJson($table, headerChecker $header){
    $final = array();
    foreach ($table as $item) {
        $box = array(
            "id" => $item["id"],
            "Nom" => $item["Nom"],
            "Lat" => $item["Lat"],
            "Lng" => $item["Lng"],
            "place" => $item["place"],
            "placeMax" => $item["placeMax"]
        );
        $reserv = array(
            "ResId" => $item["ResId"],
            "time" => $item["time"],
            "boxEntering" => $item["boxEntering"],
            "boxClosing" => $item["boxClosing"],
            "active" => $item["active"],
            "UserId" => $item["UserId"],
            "BoxId" => $item["BoxId"],
            "boxPlace" => $item["boxPlace"],
        );
        $reserv["box"] = $box;
        $final[] = $reserv;
    }
    $arr = array("reservs" => $final);
    $header->tokenJson($arr);
    echo json_encode($arr);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM