2016-05-22 4 views
0

Моя проблема в том, что когда я использую foreach через мои команды JSON, он даст только первую команду. В этом случае HELP, но не второй, который является тестом.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; везде. Тогда у вас не может быть второй итерации, потому что вы всегда завершаете процесс. Удалите возврат в соответствии с вашей логикой, чтобы иметь вторую итерацию и сделать правильный рефакторинг для вашего кода, чтобы сделать его работоспособным.

+0

Спасибо за предложение, я внесем изменения! –

3

Это потому, что вы установили

echo "Not Found!"; return; 

в петле, так что нет никаких шансов на второй итерации. Этот код должен быть после цикла не внутри.

Смежные вопросы