我不能将json数组格式化为所需的格式

i have json array that i generate from php. However the format is not what i want. i have related questions but it is not the format i want Please see below what i did and tried vs what i want

    //////////////
$data variable array
///////////////

Array
    (
        [0] => Array
            (
                [id] => 2
                [start_date] => 2018-05-17 08:40
                [end_date] => 2018-05-17 09:00
            )

        [1] => Array
            (
                [id] => 3
                [start_date] => 2018-05-17 08:40
                [end_date] => 2018-05-17 09:00
            )
      )

This is what i do

$array[] = $data;
echo json_encode($array);

The output

[
 {"id":2,"start_date":"2018-05-17 08:40","end_date":"2018-05-17 09:00"},
 {"id":3,"start_date":"2018-05-17 08:40","end_date":"2018-05-17 09:00"}
]

This is what i tried

$array["data"] = $data;
echo json_encode($array);

The output

{"data":
 {"id":2,"start_date":"2018-05-17 08:40","end_date":"2018-05-17 09:00"},
 {"id":3,"start_date":"2018-05-17 08:40","end_date":"2018-05-17 09:00"}
}

The output i want

{
  "data": [
             {"id":2,"start_date":"2018-05-17 08:40","end_date":"2018-05-17 09:00"},
             {"id":3,"start_date":"2018-05-17 08:40","end_date":"2018-05-17 09:00"}
          ]
}

you have to build an array first, then construct an object. See below

$array = [
    [
        "id" => 2,
        "start_date" => "2018-05-17 08:40",
        "end_date" => "2018-05-17 09:00"
    ],
    [
        "id" => 3,
        "start_date" => "2018-05-17 08:40",
        "end_date" => "2018-05-17 09:00"
    ]
];
$data["data"] = $array;
echo json_encode($data);

You need to make $data an array first.

For example:

$data[] = ["id" => 2, "start_date" => "2018-05-17 08:40", "end_date" => "2018-05-17 09:00"];

$array["data"] = $data;
echo json_encode($array);

Which returns:

{
  "data":[
           {"id":2,"start_date":"2018-05-17 08:40","end_date":"2018-05-17 09:00"}
         ]
}

It seems that you are getting the $data from loop over sql output:

$array = ["data"=>[]];// initialize $array outside your loop

while($data = mysqli_fetch_assoc($result)){
    $array['data'][] = $data;  // push $data into $array['data']
}

echo json_encode($array);

instead of using $array["data"] i put "data" into an array an then another array for $data.

$array = array("data" => $data);
$enData = json_encode($array); //encoding array to json
$deData = json_decode($enData, true); //decoding array

print_r($deData);

The above would output something like this:

Array
(
    [data] => Array
        (
            [id] => 3
            [start_date] => 2018-05-17 08:40
            [end_date] => 2018-05-17 09:00
        )

)

and if you do this:

print_r($deData['data']);

//Output

Array
(
    [id] => 3
    [start_date] => 2018-05-17 08:40
    [end_date] => 2018-05-17 09:00
)