【问题标题】:php - Iterate through array and order by dependenciesphp - 遍历数组并按依赖项排序
【发布时间】:2015-04-28 02:18:35
【问题描述】:

我想知道是否有已知的类/函数或任何教程可以帮助通过其依赖项对数组进行排序(存储为密钥对的值)。

即(请注意这些不是实际的依赖)

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
        )

)

任何帮助将不胜感激

【问题讨论】:

    标签: php dependencies


    【解决方案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;
                }
            }
        }
    }
    

    如果其他人想要类似的东西,请在这里

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-17
      • 2015-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-03
      • 2014-11-10
      相关资源
      最近更新 更多