我在if语句的其余部分之前尝试了if isset($_GET['whatever'])...
。 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
作为我希望实现的目标。< / p>
答案 0 :(得分:10)
有时我使用全局GET
函数:
function GET($key, $default = null) {
return isset($_GET[$key]) ? $_GET[$key] : $default;
}
答案 1 :(得分:2)
所有混乱的主要想法很简单:程序中的每个变量都应在使用前初始化。
因此,您可以做的最好的事情是将所有变量集中设置,例如,在脚本的最顶层。
但是有一些不同的情况。对于您发布的案例,您不需要这些,但
if ($_SERVER['REQUEST_METHOD'] == "POST")
答案 2 :(得分:2)
已经回答了,但由于没有提及,也请尝试:
$var = filter_input(INPUT_GET, 'varname');
如果它不存在,那将返回null,没有恼人的数组通知,并且还以各种方式过滤掉潜在的坏东西。另见:http://www.php.net/filter
答案 3 :(得分:1)
你可以为你做一个功能。
function getVar($item){
return isset($_GET[$item]) ? $_GET[$item] : '';
}
然后你可以if(getVar('whatever') == "whatever")
。
答案 4 :(得分: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
我不想写一个证明这一点的例子。 :)
答案 5 :(得分:0)
简单我认为你想检查是否设置了get值然后需要做下一步,否则做不同的
我喜欢第一个答案,但需要检查它是否适合你
如果(isset($ _ GET [ '无论']){ if($ _GET ['whatever'] ==“whatever”); { //做其余的事 } 其他{ //做其余的事 } }
希望如果我认为你的需要可能会有所帮助
答案 6 :(得分:0)
没有通知
$key = &$_POST['key'];
这种方式(内部函数)被删除,并显示错误:
function f($s){}
f(&$_POST['key']);
致命错误:已删除调用时间传递引用
答案 7 :(得分:-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
}
}
对我来说似乎很有效。