0

if isset($_GET['whatever'])...在我的 if 语句的其余部分之前,我正在尝试。E_NOTICE 错误是方便关闭的方法,对于$_POST变量我在我的初始化脚本中有一个解决方案..

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

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

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

如果您不知道密钥是什么,我不确定如何动态执行此操作?任何人都可以帮助找到类似的$_GET变量解决方案吗?

编辑:

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

编辑:

抱歉,如果我不清楚我正在寻找解决方案,$_GET而不是$_POST- 我只是$_POST作为我希望实现的目标的一个例子。

4

8 回答 8

10

有时我使用全局GET函数:

function GET($key, $default = null) {
    return isset($_GET[$key]) ? $_GET[$key] : $default;
}
于 2010-08-31T19:25:00.787 回答
2

所有这些混乱的主要思想很简单:程序中的每个变量都应该在使用前进行初始化。
因此,您能做的最好的事情就是将所有变量集中设置在脚本的最顶部。

但也有一些不同的情况。对于您发布的案例,您不需要这些,但

if ($_SERVER['REQUEST_METHOD'] == "POST")
于 2010-08-31T19:20:03.533 回答
2

已经回答了,但由于没有提及,请尝试:

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

如果它不存在,它将返回 null ,没有烦人的数组通知,并且还以各种方式过滤掉潜在的坏东西。另见:http ://www.php.net/filter

于 2010-08-31T21:10:45.433 回答
1

您可以创建一个函数来为您执行此操作。

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

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

于 2010-08-31T19:25:20.473 回答
1

这里有两种方法。

/*
* 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

我能想到的第三个选项是将 $_GET 变成它自己的类。PHP 重载是这样做的方便技巧。

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

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

于 2010-08-31T21:00:17.230 回答
0

简单我想你想检查是否设置了获取值然后需要做下一步否则做不同的

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

if(isset($_GET['whatever']){ if ($_GET['whatever'] == "whatever");{ //做剩下的 } else{ //做剩下的 } }

如果我认为是您的需要,希望对您有所帮助

于 2010-08-31T19:32:57.407 回答
0
  • 短的
  • 没有通知

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

这样(内部函数)它被废弃,并显示错误:

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

致命错误:调用时传递引用已被删除

于 2011-09-23T13:33:32.623 回答
-1

在编写这类脚本时,我通常在顶部执行以下操作:

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

这对我来说似乎工作得很好。

于 2010-08-31T19:31:13.053 回答