PHP Json只是第一个结果

时间:2016-05-22 14:50:57

标签: php json

我的问题是,当我通过我的JSON命令使用foreach时,它只会给出第一个命令。在这种情况下是HELP,但不是第二个是Test。

我该如何解决这个问题?

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;
}

我的杰森:

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

2 个答案:

答案 0 :(得分:3)

这是因为你设置了

   echo "Not Found!"; return;
循环中的

因此没有机会进行第二次迭代。该代码应该在循环之后不在内部。

答案 1 :(得分:2)

因为到处都有return;。然后你不能进行第二次迭代,因为你总是完成这个过程。根据您的逻辑删除返回以进行第二次迭代并对您的代码进行适当的重构,以使其正常运行。