为什么“if语句”必须“die()”,否则就不起作用了?

时间:2017-02-10 作者:john-thomas

if ($_GET[\'api\'] == \'json\' && isset($_GET[\'id\'])) {

        $post = get_post($_GET[\'id\']);   // $post contains the post object   

        header("content-type: application/json");
        echo json_encode($post);
}
die();
这段代码可以工作,但是如果我想扩展它,那么在第二种情况下(下面),如果我写?second=case&id=204 到我获取的urlUnexpected但如果我写信?first=case&id=204 我收到了请求

if (isset($_GET[\'api\'])) {
    if ($_GET[\'first\'] == \'case\' && isset($_GET[\'id\'])) {
         // $query is the WP_Query Object
        $post = get_post($_GET[\'id\']);   // $post contains the post object   

        header("content-type: application/json");
        echo json_encode($post);
    }
    if ($_GET[\'second\'] == \'case\' && isset($_GET[\'id\'])) {
         // $query is the WP_Query Object
        $post = get_post($_GET[\'id\']);   // $post contains the post object   

        header("content-type: application/json");
        echo json_encode($post);
    }
    die();
}

1 个回复
最合适的回答,由SO网友:Fayaz 整理而成

很可能是因为$_GET[\'first\'] 尝试时未定义?second=case&id=204.

相反,请尝试以下代码(假设first &;second 无法同时出现):

if (isset($_GET[\'api\'])) {
    if (isset($_GET[\'first\']) && $_GET[\'first\'] == \'case\' && isset($_GET[\'id\'])) {
         // $query is the WP_Query Object
        $post = get_post($_GET[\'id\']);   // $post contains the post object   

        header("content-type: application/json");
        echo json_encode($post);
    }
    else if (isset($_GET[\'second\']) && $_GET[\'second\'] == \'case\' && isset($_GET[\'id\'])) {
        // $query is the WP_Query Object
        $post = get_post($_GET[\'id\']);   // $post contains the post object   

        header("content-type: application/json");
        echo json_encode($post);
    }
    die();
}

相关推荐

创建帖子,包含来自远程API的数据

我需要一些帮助和指导。因此,我正在开发一个网站(自定义主题),目标是从远程API获取数据。我希望能够将数据存储在各个帖子中(一种自定义帖子类型),当有人向远程API添加或删除数据时,它应该会更新网站上的帖子。我使用的API的结构如下:https://pippinsplugins.com/edd-api/products我知道如何从中获取数据并解码JSON等。$url = \'https://pippinsplugins.com/edd-api/products\'; $username