2011-01-24 76 views
1

我一直在PHP中制作一个IRC bot。我为0到5之间的不同用户提供了特定的访问级别.0是来宾,5是管理员。通过多维关联数组循环遍历

我一直在试图编写一个命令,当用户访问它时,它会向它们发送一个允许使用的命令和语法列表。

到目前为止,我有这样的事情

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

我不知道如何通过其循环,使if ($accessLevel == 5) then show commands for $array[5(and below)]

最后我希望它送出去$array[5][command][trigger] : $array[5][command][descrip]

我不不一定需要你为我编写代码,只要朝正确的方向推进就会有所帮助。

回答

5

这应该去做...(检查权限级别)

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) 

      } 
     } 
    } 
} 

在一个侧面说明,而不是使用字符串键的水平,你可以使用数组indicies,这将使合并后的外foreach/if组合写成

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

我绝对喜欢使用数组标记的想法。这使它更清洁。让我试试这个报告。 – Rob 2011-01-24 18:45:24

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

像这样的事情? (Prolly想添加换行符或分隔符)

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