2016-05-22 13 views
0

私の問題は、私がforeachを使用してJSONコマンドを使用すると、最初のコマンドだけを与えるということです。この例では、HELPですが、2番目のテストはTestではありません。PHP Jsonのみ最初の結果

どうすればこの問題を解決できますか?

PHP:

echo "Commands:<br>"; 
$json = file_get_contents("App/cmd/commands.json"); 
$register = json_decode($json, true); 
$command = $_GET["c"]; 
foreach ($register['commands'] as $key => $value){ 
    echo $key; 
    if($command == $key) 
    { 
     echo "Found!"; 
     return; 
    } 
    if(isset($register["commands"][$key]["alias"])){ 
     echo "&nbsp;&nbsp; Has Aliases<Br>"; 
     $aliases = explode(",", $register["commands"][$key]["alias"]); 
     foreach ($aliases as $alias) 
     { 
      if($command == $alias) 
      { 
       echo "Found!"; 
       return; 
      } 
     } 
    } 
    echo "Not Found!"; 
    return; 
} 

マイJSON:

{"help":"value","commands":{"help":{"function":"test"},"test":{"function":"test"}}} 
+2

"alias"はサンプルデータにありません –

+0

あなたは '$ _GET [" c "]' – RiggsFolly

答えて

2

どこにでもreturn;があるためです。その後、常にプロセスを終了するので、2回目の反復はできません。ロジックに応じてリターンを削除し、2回目の繰り返しを行い、コードに適切なリファクタを作成して機能させます。

+0

で渡していますお寄せいただきありがとう、私は変更を行います! –

3

2回目の反復のためのチャンスがありませんので、あなたは、ループ内の

echo "Not Found!"; return; 

を設定するので、それがあります。そのコードはループの内側ではないはずです。

関連する問題