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
)