Вы также можете попробовать стандартный метод sql un-pivoting, используя последовательность логики со следующим кодом. Следующий код имеет 3 шага:
select *
from
(
select name, subject,
case subject
when 'Maths' then maths
when 'Science' then science
when 'English' then english
end as Marks
from studentmarks
Cross Join (values('Maths'),('Science'),('English')) AS Subjct(Subject)
)as D
where marks is not null;
array_count_values()
возвращает список значений и количество раз, которое они встречаются, поэтому простое использование array_push()
добавит весь этот массив как 1 элемент и даст вам результаты, которые вы получили.
Вместо этого вы можете добавлять результаты по одному в массив $temp
и получать результаты после ...
$temp = [];
$res = array_count_values(array_column($query, 'status'));
foreach ( $res as $key=>$item ) {
$temp[] = [$key => $item];
}
print_r(json_encode($temp));
Вы можете использовать json_encode в массиве, чтобы получить JSON. Вот так:
$temp = ['Red' => 1,
'Blue' => 2,
'Green' => 2
];
print_r(json_encode($temp)); // {"Red":1,"Blue":2,"Green":2}
Расшифруйте свой JSON с помощью json_decode($temp, true);