php - 遍历数组并按依赖关系排序
php - Iterate through array and order by dependencies
我想知道是否有已知的 class/functions 或任何教程可以帮助按依赖项(存储为密钥对的值)对数组进行排序。
即(请注意,这些不是实际的依存关系)
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;
}
}
}
}
这里如果有人想要类似的东西
我想知道是否有已知的 class/functions 或任何教程可以帮助按依赖项(存储为密钥对的值)对数组进行排序。
即(请注意,这些不是实际的依存关系)
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;
}
}
}
}
这里如果有人想要类似的东西