Anonymous
Иерархически группируйте данные из двумерного массива по трем столбцам.
Сообщение
Anonymous » 31 окт 2024, 09:53
У меня есть массив в PHP:
Код: Выделить всё
array (size=xxx)
0 =>
array (size=9)
'cat' => string 'FIRST CAT'
'dur' => string '10'
'type' => string 'Type description 10'
'start' => string '00:00'
'end' => string '01:00'
'desc' => string 'Event description 10-1'
'price' => string 'xxx'
'extra' => string 'yyy'
1 =>
array (size=9)
'cat' => string ''
'dur' => string ''
'type' => string ''
'start' => string '01:00'
'end' => string '02:00'
'desc' => string 'Event description 10-2'
'price' => string ''
'extra' => string ''
2 =>
array (size=9)
'cat' => string ''
'dur' => string ''
'type' => string ''
'start' => string '02:00'
'end' => string '03:00'
'desc' => string 'Event description 10-3'
'price' => string ''
'extra' => string ''
3 =>
array (size=9)
'cat' => string ''
'dur' => string '20'
'type' => string 'Type description 20'
'start' => string '00:00'
'end' => string '01:00'
'desc' => string 'Event description 20-1'
'price' => string 'xxx'
'extra' => string 'yyy'
4 =>
array (size=9)
'cat' => string ''
'dur' => string ''
'type' => string ''
'start' => string '01:00'
'end' => string '02:00'
'desc' => string 'Event description 20-2'
'price' => string ''
'extra' => string ''
5 =>
array (size=9)
'cat' => string ''
'dur' => string ''
'type' => string 'Type description 21'
'start' => string '00:00'
'end' => string '01:00'
'desc' => string 'Event description 21-1'
'price' => string 'xxx'
'extra' => string 'yyy'
6 =>
array (size=9)
'cat' => string ''
'dur' => string ''
'type' => string ''
'start' => string '01:00'
'end' => string '02:00'
'desc' => string 'Event description 21-2'
'price' => string ''
'extra' => string ''
7 =>
array (size=9)
'cat' => string 'SECOND CAT'
'dur' => string '10'
'type' => string 'Type description 100'
'start' => string '00:00'
'end' => string '01:00'
'desc' => string 'Event description 100-1'
'price' => string 'xxx'
'extra' => string 'yyy'
8 =>
array (size=9)
'cat' => string ''
'dur' => string ''
'type' => string ''
'start' => string '01:00'
'end' => string '02:00'
'desc' => string 'Event description 100-2'
'price' => string ''
'extra' => string ''
9 =>
array (size=9)
'cat' => string ''
'dur' => string '20'
'type' => string 'Type description 200'
'start' => string '00:00'
'end' => string '01:00'
'desc' => string 'Event description 200-1'
'price' => string 'xxx'
'extra' => string 'yyy'
10 =>
array (size=9)
'cat' => string ''
'dur' => string ''
'type' => string ''
'start' => string '01:00'
'end' => string '02:00'
'desc' => string 'Event description 200-2'
'price' => string ''
'extra' => string ''
11 =>
array (size=9)
'cat' => string ''
'dur' => string ''
'type' => string 'Type description 210'
'start' => string '00:00'
'end' => string '01:00'
'desc' => string 'Event description 210-1'
'price' => string 'xxx'
'extra' => string 'yyy'
etc...
Мне нужно сгруппировать этот массив сначала по cat, затем по dur, а затем по типу. Массив этого типа будет иметь две строки — цена и дополнительно, а также другой массив, который будет состоять из всех данных о событиях — начало, конец и описание. Окончательная схема массива (на основе примера выше) должна выглядеть следующим образом:
Код: Выделить всё
'FIRST CAT' // 'cat'
'10' // 'dur'
'Type description 10', 'xxx', 'yyy' // 'type', 'price', 'extra'
(array of events)
'00:00', '01:00', 'Event description 10-1' // 'start', 'end', 'desc'
'01:00', '02:00', 'Event description 10-2' // 'start', 'end', 'desc'
'02:00', '03:00', 'Event description 10-3' // 'start', 'end', 'desc'
'20'
'Type description 20', 'xxx', 'yyy'
(array of events)
'00:00', '01:00', 'Event description 20-1'
'01:00', '02:00', 'Event description 20-2'
'Type description 21', 'xxx', 'yyy'
(array of events)
'00:00', '01:00', 'Event description 21-1'
'01:00', '02:00', 'Event description 21-2'
'SECOND CAT'
'10'
'Type description 100', 'xxx', 'yyy'
(array of events)
'00:00', '01:00', 'Event description 100-1'
'01:00', '02:00', 'Event description 100-2'
'20'
'Type description 200', 'xxx', 'yyy'
(array of events)
'00:00', '01:00', 'Event description 200-1'
'01:00', '02:00', 'Event description 200-2'
'Type description 210', 'xxx', 'yyy'
(array of events)
'00:00', '01:00', 'Event description 210-1'
'01:00', '02:00', 'Event description 210-2'
Каков самый простой способ преобразовать существующий массив в тот, который мне нужен в конечном итоге?
Подробнее здесь:
https://stackoverflow.com/questions/169 ... ee-columns
1730357595
Anonymous
У меня есть массив в PHP: [code]array (size=xxx) 0 => array (size=9) 'cat' => string 'FIRST CAT' 'dur' => string '10' 'type' => string 'Type description 10' 'start' => string '00:00' 'end' => string '01:00' 'desc' => string 'Event description 10-1' 'price' => string 'xxx' 'extra' => string 'yyy' 1 => array (size=9) 'cat' => string '' 'dur' => string '' 'type' => string '' 'start' => string '01:00' 'end' => string '02:00' 'desc' => string 'Event description 10-2' 'price' => string '' 'extra' => string '' 2 => array (size=9) 'cat' => string '' 'dur' => string '' 'type' => string '' 'start' => string '02:00' 'end' => string '03:00' 'desc' => string 'Event description 10-3' 'price' => string '' 'extra' => string '' 3 => array (size=9) 'cat' => string '' 'dur' => string '20' 'type' => string 'Type description 20' 'start' => string '00:00' 'end' => string '01:00' 'desc' => string 'Event description 20-1' 'price' => string 'xxx' 'extra' => string 'yyy' 4 => array (size=9) 'cat' => string '' 'dur' => string '' 'type' => string '' 'start' => string '01:00' 'end' => string '02:00' 'desc' => string 'Event description 20-2' 'price' => string '' 'extra' => string '' 5 => array (size=9) 'cat' => string '' 'dur' => string '' 'type' => string 'Type description 21' 'start' => string '00:00' 'end' => string '01:00' 'desc' => string 'Event description 21-1' 'price' => string 'xxx' 'extra' => string 'yyy' 6 => array (size=9) 'cat' => string '' 'dur' => string '' 'type' => string '' 'start' => string '01:00' 'end' => string '02:00' 'desc' => string 'Event description 21-2' 'price' => string '' 'extra' => string '' 7 => array (size=9) 'cat' => string 'SECOND CAT' 'dur' => string '10' 'type' => string 'Type description 100' 'start' => string '00:00' 'end' => string '01:00' 'desc' => string 'Event description 100-1' 'price' => string 'xxx' 'extra' => string 'yyy' 8 => array (size=9) 'cat' => string '' 'dur' => string '' 'type' => string '' 'start' => string '01:00' 'end' => string '02:00' 'desc' => string 'Event description 100-2' 'price' => string '' 'extra' => string '' 9 => array (size=9) 'cat' => string '' 'dur' => string '20' 'type' => string 'Type description 200' 'start' => string '00:00' 'end' => string '01:00' 'desc' => string 'Event description 200-1' 'price' => string 'xxx' 'extra' => string 'yyy' 10 => array (size=9) 'cat' => string '' 'dur' => string '' 'type' => string '' 'start' => string '01:00' 'end' => string '02:00' 'desc' => string 'Event description 200-2' 'price' => string '' 'extra' => string '' 11 => array (size=9) 'cat' => string '' 'dur' => string '' 'type' => string 'Type description 210' 'start' => string '00:00' 'end' => string '01:00' 'desc' => string 'Event description 210-1' 'price' => string 'xxx' 'extra' => string 'yyy' etc... [/code] Мне нужно сгруппировать этот массив сначала по cat, затем по dur, а затем по типу. Массив этого типа будет иметь две строки — цена и дополнительно, а также другой массив, который будет состоять из всех данных о событиях — начало, конец и описание. Окончательная схема массива (на основе примера выше) должна выглядеть следующим образом: [code]'FIRST CAT' // 'cat' '10' // 'dur' 'Type description 10', 'xxx', 'yyy' // 'type', 'price', 'extra' (array of events) '00:00', '01:00', 'Event description 10-1' // 'start', 'end', 'desc' '01:00', '02:00', 'Event description 10-2' // 'start', 'end', 'desc' '02:00', '03:00', 'Event description 10-3' // 'start', 'end', 'desc' '20' 'Type description 20', 'xxx', 'yyy' (array of events) '00:00', '01:00', 'Event description 20-1' '01:00', '02:00', 'Event description 20-2' 'Type description 21', 'xxx', 'yyy' (array of events) '00:00', '01:00', 'Event description 21-1' '01:00', '02:00', 'Event description 21-2' 'SECOND CAT' '10' 'Type description 100', 'xxx', 'yyy' (array of events) '00:00', '01:00', 'Event description 100-1' '01:00', '02:00', 'Event description 100-2' '20' 'Type description 200', 'xxx', 'yyy' (array of events) '00:00', '01:00', 'Event description 200-1' '01:00', '02:00', 'Event description 200-2' 'Type description 210', 'xxx', 'yyy' (array of events) '00:00', '01:00', 'Event description 210-1' '01:00', '02:00', 'Event description 210-2' [/code] Каков самый простой способ преобразовать существующий массив в тот, который мне нужен в конечном итоге? Подробнее здесь: [url]https://stackoverflow.com/questions/16961487/hierarchically-group-data-from-a-2d-array-by-three-columns[/url]