логика — как создать список из обращенного массива в Stack Overflow

я использую jQuery nestedSortable Plugin, который возвращает список элементов всякий раз, когда они меняют свой порядок. Итак, из списка, как следующий:

Item 371
Item 372
Item 373
Item 374
Item 375

Я получаю следующий массив:

'0' ...
'id' => "371"'parent_id' ...
'depth' => "0"'has_child' => "0"'1' ...
'id' => "373"'parent_id' => "372"'depth' => "1"'has_child' => "0"'2' ...
'id' => "374"'parent_id' => "372"'depth' => "1"'has_child' => "0"'3' ...
'id' => "372"'parent_id' ...
'depth' => "0"'has_child' => "1"'4' ...
'id' => "375"'parent_id' ...
'depth' => "0"'has_child' => "0"

Что я делаю сейчас, я храню приоритет (который array no) к каждому предмету.

Проблема в том, что по предоставленному массиву дочерние элементы получают более высокий приоритет (в приведенном выше примере 1 а также 2) по сравнению с их родительским элементом (в примере выше 3).

Теперь это делает невозможным воссоздание списка всякий раз, когда представление перезагружается, поскольку дочерний элемент будет отображаться перед родительским элементом.

Есть ли другой способ воссоздать список из этого массива?

РЕДАКТИРОВАТЬ

Элементы не могут иметь внуков, и depth может быть только 0 или же 1,

1

Решение

Как насчет этого подхода (где $ list — Ваш заданный массив):

$queue=array();
foreach($list as $v){
if($v['parent_id']==0){
echo 'Item '.$v['id'];
foreach($queue as $child){
echo ': Item '.$child['id'];
}
$queue=array();
}
else {
$queue[]=$v;
}
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]