Как создать корневой объект JSON с помощью php

#php #mysql #arrays #json

#php #mysql #массивы #json

Вопрос:

Мой текущий вывод моего PHP-скрипта выглядит следующим образом:

 [
   {
      "id": "1087",
      "name": "Abhishek Saini",
      "email": "info@gmail.com",
      "gender": "male"
   },
   {
      "id": "1088",
      "name": "Gourav",
      "email": "test@gmail.com",
      "gender": "male"
   }
]
 

но я хочу, чтобы у него был корневой объект «users:» (или как бы он ни назывался):

 {
   "users": [
      {
         "id": "1087",
         "name": "Abhishek Saini",
         "email": "info@gmail.com",
         "gender": "male"
      },
      {
         "id": "1088",
         "name": "Gourav",
         "email": "test@gmail.com",
         "gender": "male"
      }
   ]
}
 

Я действительно не знаю, как этого добиться, потому что многое из того, что я видел в Интернете, сильно отличается от моего php-скрипта.

Я думаю, что это всего лишь небольшое изменение, я не хочу переписывать весь свой скрипт.

Вот как выглядит мой php-скрипт:

 <?php


    ...

    $conn = new mysqli($servername, $username, $password, $dbName);

    if(!$conn){
        die("Connection Failed. ". mysqli_connect_error());

    }else{
        echo "Connection Succeeded";
    }

    $sql = "SELECT * FROM users";
     $result = $conn->query($sql);


     if ($result->num_rows > 0) {

         $result = $conn->query($sql);
         $result_code .= "found lines - ";
         while($row = $result->fetch_assoc()) {
                                 $json[$row["id"]]                     = $row["id"];
                                 $json[$row["name"]]                     = $row["name"];
                                 $json[$row["email"]]                     = $row["email"];
                                 $json[$row["gender"]]                     = $row["gender"]; 
         }
     } else {
     $result_code .= "no rows in db! - ";
     }
echo json_encode($json);
?>
 

Какую строку я должен добавить, чтобы она дала мне корень «пользователей»?

Комментарии:

1. У вас есть ответы или в ваших заданиях $json["users"][$row["id"]] =

Ответ №1:

Просто оберните существующие данные в ассоциативный массив:

 $json = array('users' => $json);
echo json_encode($json);
 

Вывод:

 {
    "users": [
        {
            "id": "1087",
            "name": "Abhishek Saini",
            "email": "info@gmail.com",
            "gender": "male"
        },
        {
            "id": "1088",
            "name": "Gourav",
            "email": "test@gmail.com",
            "gender": "male"
        }
    ]
}
 

Демонстрация на 3v4l.org

Ответ №2:

Вы должны присвоить свой результат users ключу. Незадолго до echo json_encode($json) этого просто добавьте $json = ['users' => $json] .