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;
            }
        }
    }
}

这里如果有人想要类似的东西