代码之家  ›  专栏  ›  技术社区  ›  Mikey1980

$获取和ISset()。

  •  0
  • Mikey1980  · 技术社区  · 14 年前

    我正在尝试 if isset($_GET['whatever'])... 在我剩余的if语句之前。注意到错误是关闭和 $_POST 变量i 在我的初始化脚本中有一个解决方案

    $POST = (is_array( $_POST ) && count( $_POST ) > 0);
    

    我发现这有助于自我发布脚本看起来很干净。

    if ($POST) {
        // now do something with $_POST...
    }
    

    如果您不知道密钥是什么,我不知道如何动态地执行此操作?有人能帮我找到类似的解决方案吗? $_GET 变量?

    编辑:

    我只是想要 if ($_GET['whatever'] == "whatever"); 如果没有设置则返回false,如果没有设置则返回no E_NOTICE 错误。

    编辑:

    抱歉,如果我不清楚,我正在寻找解决方案 $GET 美元邮报 --我只是在用 美元邮报 作为我希望实现的一个例子。

    8 回复  |  直到 10 年前
        1
  •  10
  •   Ionuț G. Stan    14 年前

    有时我使用全局 GET 功能:

    function GET($key, $default = null) {
        return isset($_GET[$key]) ? $_GET[$key] : $default;
    }
    
        2
  •  2
  •   Your Common Sense    14 年前

    所有这些混乱的主要想法很简单: 程序中的每个变量都应该在使用前初始化。
    因此,最好的方法是将所有变量集中设置,例如,在脚本的最顶部。

    但也有一些不同的情况。对于你张贴的案例,你不需要这些,但是

    if ($_SERVER['REQUEST_METHOD'] == "POST")
    
        3
  •  2
  •   tadamson    14 年前

    已回答,但由于未提及,请尝试:

    $var = filter_input(INPUT_GET, 'varname');
    

    如果它不存在的话,它将返回空值,而不会出现令人讨厌的数组通知,而且还可以通过各种方式过滤掉潜在的坏东西。参见: http://www.php.net/filter

        4
  •  1
  •   gen_Eric    14 年前

    你可以做一个函数来为你做这个。

    function getVar($item){
        return isset($_GET[$item]) ? $_GET[$item] : '';
    }
    

    然后你可以做 if(getVar('whatever') == "whatever") .

        5
  •  1
  •   LLBBL    14 年前

    这里有两种方法。

    /*
    * Makes any request keys into variables of the same name
    */
    foreach($_GET AS $key => $value) {
        ${$key} = ($value);
    }    
    
    //Assuming a input key of $_GET['whatever'] 
    echo $whatever;
    
    /*
    * Casting to an object
    */
    $get = (object) $_GET;
    
    //Assuming a input key of $_GET['whatever'] 
    echo $get->whatever
    

    我能想到的第三个选择是让美元进入自己的班级。PHP重载是实现这一点的简便技巧。

    http://php.net/manual/en/language.oop5.overloading.php

    我不想写一个例子来证明这一点。:)

        6
  •  0
  •   Rahul TS    14 年前

    很简单,我认为您需要检查是否设置了get值,然后需要执行下一步,否则执行不同的操作

    我喜欢第一个答案,但需要检查它是否适合你。

    if(isset($\u get[“whatever”]){ if($_get['whatever']=“whatever”);{ /休息一下 } 否则{ /休息一下 } }

    如果我认为你需要的话,希望能有所帮助

        7
  •  0
  •   user669677    10 年前
    • 短的
    • 没有通知

      $key = &$_POST['key'];

    通过这种方式(函数内部),它被取消作用,并显示错误:

    function f($s){}
    f(&$_POST['key']);
    

    致命错误:已删除按引用传递的调用时间

        8
  •  -1
  •   Ryan Kinal    14 年前

    在写这些脚本时,我通常在顶部做类似的事情:

    $submitted = isset($_POST['submit']) ? true : false;
    $username = isset($_POST['username']) ? $_POST['username'] : null;
    $password = isset($_POST['password']) ? $_POST['password'] : null;
    (etc.)
    

    然后,当测试这些值时,它看起来像这样:

    if ($submitted)
    {
        if ($username && $password)
        {
            // do stuff with username and password including testing their values
        }
    }
    

    这对我来说似乎很管用。

    推荐文章