2011-01-24 5 views
1

J'ai créé un bot IRC en PHP. J'ai donné à différents utilisateurs des niveaux d'accès spécifiques compris entre 0 et 5. 0 étant un invité et 5 étant un administrateur.Boucler un tableau associatif multidimensionnel

J'ai essayé d'écrire une commande qui quand un utilisateur l'accède, il leur enverra une liste de commandes et de syntaxe qu'ils sont autorisés à utiliser.

Jusqu'à présent, j'ai quelque chose comme ce

$array = array 
(
    "5" => $commands = array 
     (
      "test" => $test2 = array 
       (
        "trigger" => "!test", 
        "descrip" => "Just testing." 
       ) 
      "test2" => $test3 = array 
       (
        "trigger" => "!lol", 
        "descrip" => "another test." 
       ) 
     ) 
); 

Je ne sais pas comment faire une boucle à travers elle de sorte que if ($accessLevel == 5) then show commands for $array[5(and below)]

A la fin je le veux d'envoyer $array[5][command][trigger] : $array[5][command][descrip]

Je don Vous n'avez pas besoin de le coder pour moi, juste une poussée dans la bonne direction serait utile.

Répondre

5

Cela devrait le faire ... (vérifier le niveau de privilège)

foreach($array as $level => $priv){ 
    // check for privilege level 
    if($level >= $accessLevel){ 
     // loop through privilege array 
     foreach($priv as $command => $list){ 
      foreach($list as $trigger => $description) 

      } 
     } 
    } 
} 

Sur une note de côté, au lieu d'utiliser les touches de chaîne pour le niveau, vous pouvez utiliser indicies de tableau, et qui permettrait à l'extérieur combinée foreach/if combinaison à écrire comme

for($i = $accessLevel; $i >= 0; $i--){ 
    $priv = $array[$i]; 
    //... 
} 
+0

J'aime vraiment l'idée d'utiliser les indications tableau. Cela le rend beaucoup plus propre. Laissez-moi essayer et rendre compte. – Rob

0
for ($i = 5; $i >= 0; --$i) { 
    //list commands for accesslevel $i 
} 
0

Quelque chose comme ça? (Prolly veux ajouter des nouvelles lignes ou des délimiteurs)

foreach ($array[5] as $key=>$value) { 
    echo $key; 
    echo $value['trigger']; 
    echo $value['descrip']; 
} 
Questions connexes