我想检查$_POST['submit']是否已过帐。
我最初的代码是:
if ($_POST['submit']) { }
但我有一个PHP通知,上面有这样的代码——"未定义的索引:在…中提交"
所以要删除通知,我必须写下:
if (isset($_POST['submit'])) { }
但这是毫无意义的,因为$_POST数组是全局的,并且它总是返回true。此外,如果我想在没有PHP通知的情况下检查$_POST['submit']是否不是0,我必须写下:
if (isset($_POST['submit']) && $_POST['submit'] != 0) { }
在这种特殊情况下,我更喜欢:
if ($_POST['submit']) {}
但在这里我得到了PHP通知。
那么,哪种方式最合适/最被接受呢?
感谢
isset($_POST['submit'])
检查submit
键是否设置在$_POST
数组中。它不只是检查$_POST
数组是否存在,因此不是"毫无意义的"。如果您想在不触发错误的情况下检查值是否为而非false(== false
),包括0
,这就是empty
的作用:
if (!empty($_POST['submit']))
这和是一样的
if ($_POST['submit'])
但是如果该值不存在,则不触发通知。
请参阅PHP的isset和empty的最终指南以获得详尽的解释。
尝试
if ($_SERVER['REQUEST_METHOD']=='POST')
{
//do
}
从PHP版本7开始,有一种新的方法可用,称为"空凝聚运算符";。这种方法可以节省代码中的时间和空间。
$submit = $_POST['submit'] ?? '';
如果提交密钥不存在或为NULL,则$submit
变量的值将为空字符串。
此方法不限于$_POST。它适用于任何变量。例如:
echo $my_message ?? 'No message found';
如果消息未初始化或为NULL,则上面的语句将输出No message found
使用下面的文档链接,您可以使用null联合运算符做更多的事情。
此处的文档
$_POST[]检查是否提交了变量而不是表单名称。
if ( isset($_POST['name']) ) {
// work here
}
根据我的理解,应该如下所示:
if (isset($_SERVER) && isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD']=='POST'){
# if method is post, code goes here.
}
如果您确信您的方法是POST。并且您在$_POST
中有数据发布,您可以使用以下代码:
if (isset($_POST['submit']) && $_POST['submit'] != '') {# I think, '' instead of 0
# if data is posted, code goes here.
}
我通常更喜欢$_POST
。