2011-01-24 12 views
1

私はPHPでIRCボットを作っています。私は0から5の間で、異なるユーザーに特定のアクセスレベルを与えました。0はゲスト、5は管理者です。多次元連想配列をループする

私は、ユーザーがそれにアクセスするときに、使用が許可されているコマンドと構文のリストを送信するコマンドを作成しようとしています。

これまでのところ私は終わりif ($accessLevel == 5) then show commands for $array[5(and below)]

が、私はそれが$array[5][command][trigger] : $array[5][command][descrip]

Iドンを送信するように、私はどのようにそれをループする見当がつかないこの

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

のようなものを持っています必然的に私のためにそれをコーディングする必要があります。ちょうど正しい方向へのプッシュは役に立ちます。

答えて

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]; 
    //... 
} 
+0

私は間違いなく配列の指標を使うのが好きです。それはそれをもっときれいにする。私にこれを試して報告してみましょう。 – Rob

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

何かのように書くことにしますか? (改行やデリミタを追加したいと思っています)

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