За последние 24 часа нас посетили 16688 программистов и 1650 роботов. Сейчас ищут 1978 программистов ...

Как сделать запрос или сортировку чтобы данные получились массив в массиве?

Тема в разделе "PHP и базы данных", создана пользователем lamok, 22 авг 2017.

  1. lamok

    lamok Активный пользователь

    С нами с:
    16 июн 2008
    Сообщения:
    64
    Симпатии:
    1
    Здравствуйте.
    Есть 2 таблицы: competition_type в ней столбцы id_competition, competition_name
    и events в ней id_events, id_competition, events_name,получается связь один (competition_type) ко многим
    (events) т.к. одной записи из competition_type соответствует несколько записей из events.

    Хотелось чтобы возвращаемый результат получился вида:

    competition_name а потом в массиве шли все события относящиеся к данному названию и далее по названию столбца competition_name.

    Все что пока нарыл, это запрос вида:
    'select * from competition_type '
    .'INNER JOIN events USING(id_competition) '

    Но как данные привести к нужному виду не пойму.

    Подскажите как можно привести к нужному виду?
     
  2. Walk

    Walk Активный пользователь

    С нами с:
    7 сен 2008
    Сообщения:
    452
    Симпатии:
    86
    Просто пересоберите исходный массив в тот, что вам нужен, по нужным условиям, пример:

    PHP:
    1. $a = array(
    2.     'яблоки' => '5 кг',
    3.     'груши' => '3 кг',
    4.     'арбузы' => '3 шт.',
    5.     'помидоры' => '2 кг',
    6.     'огурцы' => '4,5 кг',
    7.     'капуста' => '5 шт.',
    8. );
    9.  
    10. $new = array();
    11.  
    12. // пересобираем исходный массив на многомерный
    13. echo '<ul>';
    14. foreach($a as $key => $val) {
    15.     if ($key === 'яблоки' || $key === 'груши'  || $key === 'арбузы' ) {
    16.         $new['fruit'][$key] = $val;
    17.     } else {
    18.         $new['vegetables'][$key] = $val;
    19.     }
    20. }
    21. echo '</ul>';
    22.  
    23. // выводим результат
    24. echo '<pre>';
    25. print_r($new);
    26. echo '</pre>';
    Результат:
    PHP:
    1. (
    2.     [fruit] => Array
    3.         (
    4.             [яблоки] => 5 кг
    5.             [груши] => 3 кг
    6.             [арбузы] => 3 шт.
    7.         )
    8.  
    9.     [vegetables] => Array
    10.         (
    11.             [помидоры] => 2 кг
    12.             [огурцы] => 4,5 кг
    13.             [капуста] => 5 шт.
    14.         )
    15.  
    16. )
    Ничто не мешает из одного массива сделать два, или наоборот разные массивы объединить в один. Поэкспериментируйте - разберетесь.