PHP If语句if(!$ _ POST)-!$ _ POST是什么意思?

时间:2018-08-15 21:33:06

标签: php

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周围搜索了一些线程,但仍不确定。

谢谢。

4 个答案:

答案 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})错误时,这两种方法之间的区别才会变得明显}不会。