首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Php ($_POST)与if(isset($_POST))

Php ($_POST)与if(isset($_POST))
EN

Stack Overflow用户
提问于 2016-01-05 10:12:46
回答 4查看 30K关注 0票数 3

我有一个简单的表格,如下所示:

代码语言:javascript
复制
<form action="" method="post">
  <input type="text" />
  <input type="submit" value="SEND" />
</form>

当我试图通过if($_POST)接收来自这个表单的数据时,我失败了,但是当我尝试使用isset时,我成功了。

代码语言:javascript
复制
if($_POST){
  echo 'a'; //Doesn't print anything.
}
if(isset($_POST)){
  echo 'b'; //Prints 'b'
}

我想它背后的原因是表单输入中缺少了name属性,但我无法理解为什么在这种情况下if($_POST)isset($_POST)的反应方式不同。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-01-05 10:14:57

isset确定变量是否设置为非空。$_POST将始终被设置,并且始终是一个数组。

如果没有isset,您只需测试该值是否真实。一个空数组(如果您不发布任何数据,$_POST将是)将是不真实的。

票数 14
EN

Stack Overflow用户

发布于 2016-01-05 10:19:21

isset确定变量是否设置为NULL,请参见手册:http://php.net/manual/en/function.isset.php

if($_POST)检查$_POST是否为真。

在您的情况下,$_POST将始终被设置。如果使用与表单无关的其他变量执行此操作,请记住,在不知道是否设置if($var)的情况下检查它将引发通知。检查if(isset($var))不会抛出通知。

与您的问题无关:如果您想知道$_POST数组中是否有数据,可以尝试使用count($_POST),请参阅:http://php.net/manual/en/function.count.php

票数 1
EN

Stack Overflow用户

发布于 2016-01-05 10:21:23

这是因为$_POST是输入名称/值对的数组,在您的表单中没有任何输入有任何名称,因此它是一个空数组(计算为false)。您可以通过var_dump($_POST)验证它。

尝试将名称添加到文本输入以访问其值:

代码语言:javascript
复制
<form action="" method="post">
  <input type="text" name="somename" />
  <input type="submit" value="SEND" />
</form> 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34609086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档