#php #arrays
#php #массивы
Вопрос:
я создаю массив с помощью этого php-запроса..
PHP
$query = mssql_query(" SELECT count(startdate) as incept, month(startdate) as month, year(startdate) as year
FROM tblUser
WHERE startdate >= convert(varchar(20),'$val1',121) AND startdate <= convert(varchar(20),'$val2',121)
GROUP BY month(startdate), year(startdate)
ORDER BY year(startdate) ASC, month(startdate) ASC ");
while ($data = mssql_fetch_array($query)) {
$name = $data['year'];
$data = array($data['month'],$data['incept']);
$case[$data['year']] = array('name' => $name, 'data' => $data);
}
Я хочу сохранить приведенный выше запрос в следующей структуре и передать его в json.
$case = array(
'2011' => array(
'name' => 2011,
'data' => array(
array('0', 166),
array('1', 132),
..
array('5', 160)
)
),
'2012' => array(
'name' => 2012,
'data' => array(
array('0', 142),
...
array('5', 163)
)
),
'2013' => array(
'name' => 2013,
'data' => array(
array('0', 156),
...
array('6', 198)
)
)
)
Есть ли способ, которым я могу сгенерировать в этом формате? Спасибо
Комментарии:
1. Пожалуйста, опубликуйте фактический результат.
2. Вы должны предоставить образец данных.
Ответ №1:
Внутри цикла:
if (!isset($case[$data['year']])) {
$case[$data['year']] = array(
'name' => $data['year'],
'data' => array()
);
}
$case[$data['year']]['data'][] = array(
$data['month'],
$data['incept']
);
Ответ №2:
если перезаписать массив $data во второй строке вашего while, вы можете сделать :
while ($data = mssql_fetch_array($query)) {
$name = $data['year'];
$data = array($data['month'],$data['incept']);
if ( ! isset($case[$name]))
$case[$name] = array('name' => $name, 'data' => $data);
else
$case[$name]['data'][] = $data;
}