2016-06-30 9 views
0

JFolder Verwendung:Reihenfolge Array als anderer Array php

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

Lists die Baumstruktur wie folgt aus: (ignorieren und ignore2 sind Unterordner in jedem Ordner 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 
     ) 

) 

So Wir können die Reihenfolge der Ordner sehen: 0 hat den Namen "b" 1 hat den Namen "n" und 2 hat den Namen "v".

Jetzt möchte ich sie in Benutzern definierten Reihenfolge aus dem Array bestellen:

$user_defined_array = [b,v,n]; 

So, jetzt der $ Baum-Ordnungs sollten 0 => b, 1 => v and 2 => n und wenn der Benutzer sollte so sein das das Array wie [n,v,b] dann die Bestellung ändert.

Zum Beispiel, wenn der Benutzer definierten Array wie [b,v,n] das resultierende Array sollte wie folgt aussehen:

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 
     ) 

) 

Ich hoffe Frage klar ist, und ich hoffe, es ist ein Weg.

Antwort

1

Sie können dies tun, wie ich Ihre Frage

$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); 

Dies wird Ausgang ein Array basiert auf dem neuen benutzerdefinierten Array verstehen.

+0

Danke für Ihre Antwort. Dies schließt jedoch aus, dass andere Arrays ignore und ignore2 nicht aufgelistet werden. –

+0

@BhojendraNepal Ich habe die Antwort plz check bearbeitet. –

+0

Sorry, nicht sortieren ... –