За последние 24 часа нас посетили 21690 программистов и 1018 роботов. Сейчас ищут 755 программистов ...

Группировка массива PHP

Тема в разделе "PHP для новичков", создана пользователем Михаил77, 15 апр 2020.

?

Прошу помочь создать группировку массива php

  1. предложение

    0 голосов
    0,0%
  2. решено

    0 голосов
    0,0%
  1. Михаил77

    Михаил77 Активный пользователь

    С нами с:
    16 окт 2019
    Сообщения:
    31
    Симпатии:
    0
    Добрый день!

    Есть массив содержащий следующие элементы

    Код (Text):
    1. <?
    2. $array = array (
    3.      array (
    4.           "PARENT_ID" => 0,
    5.           "ID" => 100,
    6.           "NAME" => "Книги"
    7.      ),
    8.      array (
    9.           "PARENT_ID" => 0,
    10.           "ID" => 200,
    11.           "NAME" => "Газеты"
    12.      ),
    13.      array (
    14.           "PARENT_ID" => 100,
    15.           "ID" => 300,
    16.           "NAME" => "Детективы"
    17.      ),
    18.      array (
    19.           "PARENT_ID" => 100,
    20.           "ID" => 400,
    21.           "NAME" => "Приключения"
    22.      ),
    23.      array (
    24.           "PARENT_ID" => 200,
    25.           "ID" => 500,
    26.           "NAME" => "Новости"
    27.      ),
    28.      array (
    29.           "PARENT_ID" => 300,
    30.           "ID" => 700,
    31.           "NAME" => "Российские"
    32.      ),
    33.      array (
    34.           "PARENT_ID" => 300,
    35.           "ID" => 800,
    36.           "NAME" => "Иностранные"
    37.      ),
    38.      array (
    39.           "PARENT_ID" => 500,
    40.           "ID" => 900,
    41.           "NAME" => "Политика"
    42.      ),
    43.      array (
    44.           "PARENT_ID" => 500,
    45.           "ID" => 1000,
    46.           "NAME" => "Экономика"
    47.      ),
    48. );
    49. ?>
    Задача

    Необходимо произвести группировку по PARENT_ID дочернего элемента который равен ID родительского элемента.

    На выходе нужно получить массив вида

    Код (Text):
    1. <?
    2. $array = array (
    3.      array (
    4.           "PARENT_ID" => 0,
    5.           "ID" => 100,
    6.           "NAME" => "Книги",
    7.           "CHILD" =>   array (
    8.                "PARENT_ID" => 100,
    9.                "ID" => 300,
    10.                "NAME" => "Детективы",
    11.                "CHILD" =>   array (
    12.                     "PARENT_ID" => 300,
    13.                     "ID" => 700,
    14.                     "NAME" => "Российские"
    15.                ),
    16.                "CHILD" =>   array (
    17.                     "PARENT_ID" => 300,
    18.                     "ID" => 800,
    19.                     "NAME" => "Иностранные"
    20.                ),
    21.           ),
    22.           "CHILD" =>   array (
    23.                "PARENT_ID" => 100,
    24.                "ID" => 400,
    25.                "NAME" => "Приключения"
    26.           ),
    27.      ),
    28.      array (
    29.           "PARENT_ID" => 0,
    30.           "ID" => 200,
    31.           "NAME" => "Газеты",
    32.           "CHILD" =>   array (
    33.                "PARENT_ID" => 200,
    34.                "ID" => 500,
    35.                "NAME" => "Новости"
    36.                "CHILD" =>   array (
    37.                     "PARENT_ID" => 500,
    38.                     "ID" => 900,
    39.                     "NAME" => "Политика"
    40.                ),
    41.                "CHILD" =>   array (
    42.                     "PARENT_ID" => 500,
    43.                     "ID" => 1000,
    44.                     "NAME" => "Экономика"
    45.                ),
    46.           ),
    47.      ),
    48. );
    49. ?>
    То есть, элемент становится дочерним, если его PARENT_ID равен ID другого элемента

    Заранее благодарю !
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.553
    Симпатии:
    1.754
    Ты ожидаешь помощи, или готовый код?
     
  3. Михаил77

    Михаил77 Активный пользователь

    С нами с:
    16 окт 2019
    Сообщения:
    31
    Симпатии:
    0
    Если честно не знаю даже с какой стороны подойти, может хоть намек есть?
    Просить готовый код наверное нагло, благодарю за любые идеи
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.553
    Симпатии:
    1.754
    В массиве дети всегда ниже родителей, или как попало? В принципе, суть сводится к тому, чтобы хранить ссылки на каждый элемент, добавленный в итоговый массив.

    В принципе, вот что гугла даёт. Только там у него код съелся немного, надо вернуть нормальные амперсанды
    https://schibsted.com/blog/building-tree-structures-in-php-using-references/
     
  5. Михаил77

    Михаил77 Активный пользователь

    С нами с:
    16 окт 2019
    Сообщения:
    31
    Симпатии:
    0
    Благодарю за внимание, попробую поковыряться, Да структура нужна такая же