Всем привет, есть такой вот массив PHP: Array( Array( "id" => 1 "parent_id" => 0 "name" => "aaaa" ) Array( "id" => 2 "parent_id" => 0 "name" => "bbb" ) Array( "id" => 3 "parent_id" => 0 "name" => "ccc" ) Array( "id" => 4 "parent_id" => 0 "name" => "ddd" ) Array( "id" => 4 "parent_id" => 1 "name" => "eee" ) Array( "id" => 5 "parent_id" => 2 "name" => "fff" ) Array( "id" => 6 "parent_id" => 3 "name" => "ggg" ) Array( "id" => 7 "parent_id" => 1 "name" => "hhh" ) ) Как я могу вывести на страницу что-то подобное: PHP: Array( Array( "id" => 1 "parent_id" => 0 "name" => "aaaa" «sub_item» => [ Array( "id" => 4 "parent_id" =>1 "name" => "eee" ) Array( "id" => 7 "parent_id" => 1 "name" => "hhh" ) ] ) Array( "id" => 2 "parent_id" => 0 "name" => "bbb" «sub_item» => [ Array( "id" => 5 "parent_id" => 2 "name" => "fff" ) ] ) Array( "id" => 3 "parent_id" => 0 "name" => "ccc" "subitem" => [ Array( "id" => 6 "parent_id" => 3 "name" => "ggg" ) Без готовых циклов, цикл можно самому с 0 написать
1. Сделать массив ссылок на каждый элемент 2. Потом пройтись по элементам, находить через массив созданный на шаге 1 парентов, и писать в них субайтомы. 3. Отсеять из массива все элементы, у которых парент не 0, мы их уже распределили, куда надо. Обожаю ссылки, поэтому так и быть, вот даже код: http://sandbox.onlinephpfunctions.com/code/d783215591bebff78828018b51c8b356412b3644 (то, что редактор ошибку показывает - не обращай внимание, у них редактор не знает php 7.4, в котором стрелочные функции появились)
Что такое "готовые циклы", и чем они отличаются от "неготовых"? Обычно могут ограничивать стандартные функции. Написать свой array_filter - запросто можно, но ты такой задачи не ставил в первом сообщении. Можно было не foreach, а for заюзать, только зачем, если в языке есть специальный цикл именно для перебора массивов. Можно было вместо циклов array_walk заюзать, но у неё внутри такой же цикл, если что Можно было, конечно, вообще без циклов, с goto, но это извращение, за такое и уволить могут Или 2 влепить Но, чтобы работать с массивами, нужны какие-то итерации.
Понимаю что под капотом все равно тот же цикл)) Но это задачка от уч. материала такая стоит у меня) Написать как вы сказали array_walk или же goto.
А ты точно её понял? Можешь процитировать её прямо как есть? Циклы через goto организуют только на ассемблере, на языках высокого уровня его (goto) стараются избегать. В пыхе его вообще не было до версии 5.3. Ну если действительно циклы нельзя, а готовые функции можно - возьми array_walk, почитай доку. Алгоритм описанный это не сильно меняет.
Существует массив с такими данными, принятыми из базы: {первый массив который скинул} Создать многомерный массив по связям «parent_id» => “id” Не используя циклы. На выходе должно получится: {второй массив который я скинул вышел}
Бред... --- Добавлено --- Ну напиши всё тоже самое, только готухи вместо циклов... Только потом в реальных проектах так не делай