PHP If语句if (!$_POST)
-!$_POST
是什么意思?
例如,在我正在查看的一些旧代码中,代码显示为:
<form action="paypalorders.php" method="POST">
<input type="hidden" name="orderList" value="' . $orderList . '">
<input type="submit" value="Archive">
</form>';
if (!$_POST) {
file_put_contents('/orders.txt', $output_line1);
}
我查看了许多其他线程,但没有看到这个确切的问题,所以我试图找出它是什么。我见过这样格式化它的线程:
if(!empty($_POST)) {
但与我要寻找的不完全相同。是简写吗?我不确定,这就是为什么我要问。我已经在Google周围搜索了一些线程,但仍不确定。
谢谢。
答案 0 :(得分:3)
如果!
(不是)logical operator的右侧参数不正确,则返回true
。它强制将参数评估为布尔值。在这种情况下,将$_POST
数组评估为布尔值时,如果它不为空,则将评估为true
,如果为空,则将评估为false
。 (请参见converting to boolean。)
if (!$_POST) {
应该是检测$_POST
中是否存在 的一种安全方法。在这种情况下,empty
是不必要的,因为始终superglobals被设置,并且由于您没有引用特定的键,因此您不必担心未定义的索引通知。
我认为也值得一提的是,如果检查的唯一目的是查看发送了哪种类型的请求,则最好只check the request method directly,因为!$_POST
不会 表示该请求不是帖子,因为发布请求可以为空。
答案 1 :(得分:2)
(bool)$array
包含元素, true
的计算结果为$array
,如果它为空,则计算结果为false
。
由于$_POST
是一个数组,如果!$_POST
为空,则true
返回$_POST
。
解释这种情况的另一种方法是,对于没有通过HTTP POST方法访问此页面的情况,您将执行条件任务。
答案 2 :(得分:1)
由于$ _POST是一个数组,如果为空,则其值为null,因此if(!$ _ POST)如下所示:
if(!null){
//code
}
以下代码返回true或false,但是两者的目的是相同的。
if(!empty($_POST)){
//code
}
希望对您有帮助!
答案 3 :(得分:0)
当将数组强制转换为bool时,如果数组为空(例如,如果count($ arr)=== 0),则将强制转换为bool(false),否则将其强制转换为bool(true)。 $query = new WP_Query(array('post_type' => 'condo', 'p' => $action['akcions']->ID))
将检查的内容强制转换为bool。因为$ _POST始终存在,所以!
和if (!$_POST) {
都执行完全相同的操作,因此它们检查$ _POST是否为空。它甚至不是遗留代码,对于7.3.0仍然完全有效。只有当您检查变量if(empty($_POST)) {
,may not exist
会抛出!$arr
错误(如果$ arr不存在,{{1})错误时,这两种方法之间的区别才会变得明显}不会。