循环通过多维关联数组

时间:2011-01-24 18:37:40

标签: php multidimensional-array associative-array

我一直用PHP制作一个IRC机器人。我给了不同用户特定的访问级别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]

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

3 个答案:

答案 0 :(得分: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)

            }
        }
    }
}

在旁注中,不是使用字符串键来表示级别,而是可以使用数组指示,这样可以将组合的外部foreach/if组合写为

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

这样的东西? (Prolly想要添加换行符或分隔符)

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