Мне было интересно, есть ли известный класс / функции или какие-либо учебные пособия, которые могут помочь упорядочить массив по его зависимости (хранится там же, как значение пары ключей).
т.е. (обратите внимание, что это не фактические зависимости)
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
)
)
любая помощь будет принята с благодарностью
Удалось выяснить это (я думаю):
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;
}
}
}
}
здесь, если кто-то хочет что-то похожее
Других решений пока нет …