2016-03-18 3 views
0

Мой выборный запрос ($ sql = "select day, hour, dollar from db";) output состоит из 744 строк, по одному на каждый час 31-дневного месяца. Я присоединяюсь их, и это, как это (запятые для удобства чтения):Результаты запроса группы php ПОСЛЕ запроса

day 1, hour 1, dollars 300 
day 1, hour 2, dollars 310 
day 1, hour 3, dollars 299 
/*etc., up to row 744, which looks like the following */ 
day 31, hour 24, dollars 200 

Итак, 31 дней с 24 часов каждый день, все в 744 строк.

В PHP, я хочу, чтобы сгруппировать строки по день, так что я получаю

da 1: 
hour 1, dollars 300 
hour 2, dollars 310 
hour 3, dollars 299 
.. 
hour 24, dollars 299 
31: 
24, 200 

Чтобы установить day как уровень выше hour и dollars, я попытался сделать массив, например, так:

$arr[] = array($day =>['hour' => $hour, 'dollars' => $dollars]); 

print_r($arr) производит это:

Array 
(
    [1] => Array 
     (
      [hour] => 1 
      [dollars] => 300 
     ) 

) 
Array 
(
    [1] => Array 
     (
      [hour] => 2 
      [dollars] => 310 
     ) 

) 
Array 
(
    [1] => Array 
     (
      [hour] => 3 
      [dollars] => 299 
     ) 

) 

// etc. up to: 

Array 
(
    [31] => Array 
     (
      [hour] => 24 
      [dolars] => 200 
     ) 

) 

... но то, что мне нужно что-то вроде этого:

Array 
(
    [1] => 
     [ 
      [hour] => 1 
      [dollars] => 300 
     ], 
     [ 
      [hour] => 2 
      [dollars] => 310 
     ], 
     [ 
      [hour] => 3 
      [dollars] => 299 
     ], 
/*etc., up to */ 
     [ 
      [hour] => 24 
      [dollars] => 200 
     ] 
) 

Любые предложения о том, как я могу это сделать?

+0

+1 по числу измерений, следует сделать трюк. Чтобы избежать проблем при управлении индексами, сначала создайте массивы для каждого дня, а затем добавьте эти массивы в глобальный массив. – Loufylouf

+0

'$ arr [$ day] [] = ['hour' => $ hour, 'dollars' => $ dollars];' – fusion3k

ответ

0

Попробуйте

$arr[$day] []= array('hour' => $hour, 'dollars' => $dollars); 
Смежные вопросы