Пишу элемент приложения, который обходит список полученных комментариев и сортирует их ступеньками. Написал функцию, которая выполняет данное действие:
foreach ( $args as $val ) {
if ( $val['parent'] == 0 ) {
array_push( $attr, $val );
foreach ( $args as $val1 ) {
if ( $val1['parent'] == $val['ID'] ) {
array_push( $attr, $val1 );
foreach ( $args as $val2 ) {
if ( $val2['parent'] == $val1['ID'] ) {
array_push( $attr, $val2 );
foreach ( $args as $val3 ) {
if ( $val3['parent'] == $val2['ID'] ) {
array_push( $attr, $val3 );
foreach ( $args as $val4 ) {
if ( $val4['parent'] == $val3['ID'] ) {
array_push( $attr, $val4 );
foreach ( $args as $val5 ) {
if ( $val5['parent'] == $val4['ID'] ) {
array_push( $attr, $val5 );
}
}
}
}
}
}
}
}
}
}
}
}
Но она доходит только до 5 ступени. Пытался сделать так, что бы рекурсивно обходились все возможные варианты, но на php такого никогда не делал и не могу реализовать данную функцию.
Не совсем понял, какого результата необходимо добиться и каковы исходные данные, но
Если есть просто список элементов, у которых указаны родители (parent_id) и их нужно отсортировать в ряд, (родитель 1, потомок 1 родителя 1, потомок 2 родителя 1, родитель 2, потомок 1 родителя 2...) то вроде должен подойти такой вариант:
function recursiveSort(&$args, $parentId = 0){
$results = [];
foreach($args as $item){
if($item['parent'] == $parentId){
$results[] = $item;
$results = array_merge($results,recursiveSort($args,$item['id']));
}
}
return $results;
}
Если необходимо создать вложенный древовидный массив (то есть у каждого элемента данного массива будет свой массив его потомков), то должен вроде подойти такой вариант:
function recursiveTreeBuild(&$args, $parentId = 0)
{
$results = [];
foreach($args as $item){
if($item['parent'] == $parentId){
$results[] = $item;
$results[count($results)-1]['items'] = recursiveTreeBuild($args,$item['id']);
}
}
return $results;
}
Не проверял, возможно где-то ошибся, но вроде должно работать.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Есть массив страниц, в котором ключ является название рубрики, а значение ключа является список страниц в этой рубрикеP
Сайт на wordpressОтправка почты через ajax в таком виде работает:
Здравствуйте, подскажите пожалуйста, как можно реализовать функционал доп услуги (добавляется сумма 500 руб или другое значение берется из админки)...
Добрый вечер всем ! Столкнулся с такой задачей, что нужно запустить PHP скрипт несколько раз, но не через Cron, тк