Итерация по массиву и упорядочение по зависимостям

Мне было интересно, есть ли известный класс / функции или какие-либо учебные пособия, которые могут помочь упорядочить массив по его зависимости (хранится там же, как значение пары ключей).

т.е. (обратите внимание, что это не фактические зависимости)

Array
(
[blueimp-canvas-to-blob] => Array
(
)

[blueimp-load-image] => Array
(
[0] => jquery
)

[blueimp-tmpl] => Array
(
[0] => jquery
[1] => blueimp-load-image
)

[jquery] => Array
(
)

[blueimp-file-upload] => Array
(
[0] => jquery
[1] => blueimp-tmpl
[2] => blueimp-load-image
[3] => blueimp-canvas-to-blob
)

)

будет заказан как:

Array
(
[blueimp-canvas-to-blob] => Array
(
)

[jquery] => Array
(
)

[blueimp-load-image] => Array
(
[0] => jquery
)

[blueimp-tmpl] => Array
(
[0] => jquery
[1] => blueimp-load-image
)

[blueimp-file-upload] => Array
(
[0] => jquery
[1] => blueimp-tmpl
[2] => blueimp-load-image
[3] => blueimp-canvas-to-blob
)

)

любая помощь будет принята с благодарностью

-1

Решение

Удалось выяснить это (я думаю):

private function orderItems(){
while( ! empty( $this->order ) ) {
$item = array_splice( $this->order, 0, 1 );
$dependencies = end( $item );
$name = key( $item );
if( empty( $dependencies ) ) {
$this->ordered[$name] = $dependencies;
} else {
$satisafied = true;
foreach( $dependencies as $dependency ) {
if( isset( $this->order[$dependency] ) ) $satisafied = false;
}
if( $satisafied ) {
$this->ordered[$name] = $dependencies;
} else {
$this->order = $this->order + $item;
}
}
}
}

здесь, если кто-то хочет что-то похожее

0

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector