0

JFolder の使用:

$tree = JFolder::listFolderTree('myfolder');

次のようなツリー構造をリストします: (ignore と ignore2 は、各フォルダー b、n、v 内のサブフォルダーです)

 Array
(
    [0] => Array
        (
            [id] => 1
            [parent] => 0
            [name] => b
            [fullname] => myfolder/b
            [relname] => myfolder/b
        )

    [1] => Array
        (
            [id] => 2
            [parent] => 1
            [name] => ignore
            [fullname] => myfolder/ignore
            [relname] => myfolder/ignore
        )

    [2] => Array
        (
            [id] => 3
            [parent] => 1
            [name] => ignore2
            [fullname] => myfolder/ignore2
            [relname] => myfolder/ignore2
        )

    [3] => Array
        (
            [id] => 4
            [parent] => 0
            [name] => n
            [fullname] => myfolder/n
            [relname] => myfolder/n
        )

    [4] => Array
        (
            [id] => 5
            [parent] => 4
            [name] => ignore
            [fullname] => myfolder/ignore
            [relname] => myfolder/ignore
        )

    [5] => Array
        (
            [id] => 6
            [parent] => 4
            [name] => ignore2
            [fullname] => myfolder/ignore2
            [relname] => myfolder/ignore2
        )

    [6] => Array
        (
            [id] => 7
            [parent] => 0
            [name] => v
            [fullname] => myfolder/v
            [relname] => myfolder/v
        )

    [7] => Array
        (
            [id] => 8
            [parent] => 7
            [name] => ignore
            [fullname] => myfolder/ignore
            [relname] => myfolder/ignore
        )

    [8] => Array
        (
            [id] => 9
            [parent] => 7
            [name] => ignore2
            [fullname] => myfolder/ignore2
            [relname] => myfolder/ignore2
        )

)

したがって、フォルダーの順序を確認できます。0 の名前は「b」、1 の名前は「n」、2 の名前は「v」です。

ここで、配列からユーザー定義の順序で並べ替えたいと思います。

$user_defined_array = [b,v,n];

したがって、$tree の順序付けは必要0 => b, 1 => v and 2 => nであり、ユーザーが配列を次のよう[n,v,b]に変更した場合、順序付けはそのようにする必要があります。

たとえば[b,v,n]、結果の配列のようなユーザー定義の配列は次のようになります。

 Array
(
    [0] => Array
        (
            [id] => 1
            [parent] => 0
            [name] => b
            [fullname] => myfolder/b
            [relname] => myfolder/b
        )

    [1] => Array
        (
            [id] => 2
            [parent] => 1
            [name] => ignore
            [fullname] => myfolder/ignore
            [relname] => myfolder/ignore
        )

    [2] => Array
        (
            [id] => 3
            [parent] => 1
            [name] => ignore2
            [fullname] => myfolder/ignore2
            [relname] => myfolder/ignore2
        )



    [3] => Array
        (
            [id] => 4
            [parent] => 0
            [name] => v
            [fullname] => myfolder/v
            [relname] => myfolder/v
        )

    [4] => Array
        (
            [id] => 5
            [parent] => 4
            [name] => ignore
            [fullname] => myfolder/ignore
            [relname] => myfolder/ignore
        )

    [5] => Array
        (
            [id] => 6
            [parent] => 4
            [name] => ignore2
            [fullname] => myfolder/ignore2
            [relname] => myfolder/ignore2
        )

    [6] => Array
        (
            [id] => 7
            [parent] => 0
            [name] => n
            [fullname] => myfolder/n
            [relname] => myfolder/n
        )

    [7] => Array
        (
            [id] => 8
            [parent] => 7
            [name] => ignore
            [fullname] => myfolder/ignore
            [relname] => myfolder/ignore
        )

    [8] => Array
        (
            [id] => 9
            [parent] => 7
            [name] => ignore2
            [fullname] => myfolder/ignore2
            [relname] => myfolder/ignore2
        )

)

質問が明確であることを願っています。方法があることを願っています。

4

1 に答える 1

1

私はあなたの質問を理解しているので、あなたはこれを行うことができます

$user_defined_array = array('b','v','n');
$newarr = array();
$i=0;$k=1;
foreach($user_defined_array as $a){
        foreach($tree as $b){
                if($k==0 && !in_array($b['name'],$user_defined_array)){
                        $newarr[$i] = $b;$i++;
                }else{$k=1;}
                if($b['name']==$a) {
                        $newarr[$i] = $b;
                        $k=0;$i++;
                }

        }

}
var_dump($newarr);

これにより、新しいユーザー定義配列に基づいて配列が出力されます。

于 2016-06-30T06:32:16.457 に答える