Преобразование одного формата JSON в другой

Мне нужно получить формат JSON, как показано ниже:

[{
"month": 'JAN',
"data": 1691
}, {
"month": 'FEB',
"data": 820
}, {
"month": 'MAR',
"data": 1050
}, {
"month": 'APR',
"data": 650
}, {
"month": 'MAY',
"data": 780
} ];

…..

В настоящее время формат, который я получаю, как показано ниже, используя код, приведенный ниже. Есть ли способ, которым я могу преобразовать этот вывод JSON в тот, который выше. Или как я могу переписать приведенный ниже код PHP. Так как я новичок в php, мне кажется, что это сбивает с толку. Спасибо за вашу ценную помощь заранее.

<?php
include("db.php");
date_default_timezone_set('Asia/Kolkata');
$thisyear =  date("Y");
$months = array();
for($i=0;$i<=12;$i++)
{
array_push($months, 0);
unset($months[0]);
}
$stack = array(
1 => 'JAN',
2 => 'FEB',
3 => 'MAR',
4 => 'APR',
5 => 'MAY',
6 => 'JUN',
7 => 'JUL',
8 => 'AUG',
9 => 'SEP',
10 => 'OCT',
11 => 'NOV',
12 => 'DEC'
);
$year[0] = 0;

$stmt = $conn1->prepare("SELECT * FROM salessummary WHERE dateoforder LIKE :key");
$stmt->execute(array('key' => "%{$thisyear}%"));

foreach ($stmt as $row) {
$month = date('m', strtotime($row['dateoforder']));
$months[intval($month)]++;
}
$high = max($months) + 10;
$datayearly = array(
'labels' => array_values($stack),
'series' => array(array(
'name' => 'series-1',
'data' => array_values($months)
))
);
$temp = json_encode($datayearly);
echo $temp;
?>

Токовый выход:

{
"labels":[
"JAN",
"FEB",
"MAR",
"APR",
"MAY",
"JUN",
"JUL",
"AUG",
"SEP",
"OCT",
"NOV",
"DEC"],
"data":[
0,
0,
0,
0,
0,
0,
0,
0,
1,
2,
1,
0
]

}

1

Решение

Попробуйте следующее:

$datayearly = [];
for($i=1;$i <= count($months);$i++)
{
$datayearly[] = [
'month' => $stack[$i],
'data' => $months[$i]
];
}

Это обеспечит вывод в виде объектов month а также data, Это просто использует for цикл для создания нового массива. Вывод будет выглядеть так:

[{
"month": "JAN",
"data": 0
}, {
"month": "FEB",
"data": 0
}, {
"month": "MAR",
"data": 0
}, {
"month": "APR",
"data": 0
},
...........
0

Другие решения

я бы пошел с чем-то вроде этого ro генерировать ваш массив:

$datayearly=[];
foreach(array_values($stack) as $i=> $m){
$datayearly[]['month']=$m;
$datayearly[]['data']=$array_values($months)[$i];
}
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector