Php if($_POST) 与 if(isset($_POST))
Php if($_POST) vs if(isset($_POST))
我有一个简单的表格,如下所示:
<form action="" method="post">
<input type="text" />
<input type="submit" value="SEND" />
</form>
当我尝试通过 if($_POST)
接收从此表单发送的数据时,我失败了,但是当尝试使用 isset
时,我成功了。
if($_POST){
echo 'a'; //Doesn't print anything.
}
if(isset($_POST)){
echo 'b'; //Prints 'b'
}
我猜它背后的原因是我的表单输入中缺少 name 属性,但我不明白为什么 if($_POST)
和 isset($_POST)
在这种情况下会有不同的反应。
isset
确定变量是否设置且不为 NULL。 $_POST
将始终被设置,并且始终是一个数组。
如果没有 isset
,您只是在测试该值是否为真。空数组($_POST
如果您不发布任何数据,则为空数组)将不真实。
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
这是因为 $_POST
是输入 names/values 对的数组,而在您的表单中没有输入有任何名称,因此它是一个空数组(计算结果为 false)。你可以通过var_dump($_POST)
.
来验证
尝试将名称添加到文本输入以访问其值:
<form action="" method="post">
<input type="text" name="somename" />
<input type="submit" value="SEND" />
</form>
主要区别是 isset 确定变量已设置且不为空 $_POST 在这里不起作用,因为您没有定义这里输入名称。 $_POST 考虑输入数组 name/values 对。
我有一个简单的表格,如下所示:
<form action="" method="post">
<input type="text" />
<input type="submit" value="SEND" />
</form>
当我尝试通过 if($_POST)
接收从此表单发送的数据时,我失败了,但是当尝试使用 isset
时,我成功了。
if($_POST){
echo 'a'; //Doesn't print anything.
}
if(isset($_POST)){
echo 'b'; //Prints 'b'
}
我猜它背后的原因是我的表单输入中缺少 name 属性,但我不明白为什么 if($_POST)
和 isset($_POST)
在这种情况下会有不同的反应。
isset
确定变量是否设置且不为 NULL。 $_POST
将始终被设置,并且始终是一个数组。
如果没有 isset
,您只是在测试该值是否为真。空数组($_POST
如果您不发布任何数据,则为空数组)将不真实。
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
这是因为 $_POST
是输入 names/values 对的数组,而在您的表单中没有输入有任何名称,因此它是一个空数组(计算结果为 false)。你可以通过var_dump($_POST)
.
尝试将名称添加到文本输入以访问其值:
<form action="" method="post">
<input type="text" name="somename" />
<input type="submit" value="SEND" />
</form>
主要区别是 isset 确定变量已设置且不为空 $_POST 在这里不起作用,因为您没有定义这里输入名称。 $_POST 考虑输入数组 name/values 对。