在各种 PHP 教程中,我看到了这种语法 -
if ($_POST) {
do something
}
我想知道这是否等同于 isset 或 !(empty) (任何一个)或具有不同的属性。
在各种 PHP 教程中,我看到了这种语法 -
if ($_POST) {
do something
}
我想知道这是否等同于 isset 或 !(empty) (任何一个)或具有不同的属性。
if ($_POST)
如果 POST 数组中有任何元素,这将评估为 true。
if(isset($_POST))
这将始终评估为 true,因为始终设置 POST 数组,但可能包含也可能不包含元素,因此它不等同于第一个示例。
if(!empty($_POST))
然而,这等效于第一个示例,因为empty()
检查数组中的内容。
测试页面是否发布到的一个很好的通用方法是:
if($_SERVER['REQUEST_METHOD'] == 'POST')
好问题。如果你问我,你正在解决 PHP 的黑暗面之一。
if 语句 就像我可以想象的任何其他语言一样,if 将参数评估为真或假。
由于 PHP 并不真正知道类型,您可以将任何表达式作为参数,然后将其作为一个整体转换为 bool
以下值被认为是“假”
所有其他值或表达式结果都被转换为 bool TRUE
现在,知道了这一点,我们需要知道的是,表达式或函数在执行时返回什么
如果未设置 POST 数据,则以下表达式为 TRUE
$_POST == FALSE
isset 函数
当给定变量已设置且不为空时,isset 返回 bool TRUE。
参数可以是变量、数组元素、字符串偏移量和对象的数据成员。
在 PHP 5.4 中,他们修复了字符串偏移的行为
$var = FALSE;
isset( $var ) === TRUE;
$var === FALSE;
更多在这里 http://de1.php.net/manual/en/function.isset.php
空函数
当变量被认为为空或不存在时返回 false。
这些值被认为是空的:
如果 var 存在并且具有非空、非零值,则返回 FALSE。否则返回 TRUE。
以下值被认为是空的:
比较表
$var = FALSE;
isset($var) === TRUE;
empty($var) === TRUE;
$var === FALSE;
$_POST
:这用于查找是否使用 HTTP POST 方法传递数据,并提取通过该方法发送的变量,这些变量收集在关联数组中
isset
:检查变量是设置(定义)还是NULL
(未定义)
如果要检查变量的值但不确定是否已设置,最佳做法是执行以下操作:
if(isset($var) && $var) { ... }
即检查isset()
然后检查变量值本身。
这样做的原因是,如果您只是检查变量本身,根据您问题中的示例,如果未设置变量,PHP 将引发警告。警告消息不是致命错误,消息文本可以被隐藏,但通常最好的做法是编写代码,使其不会引发任何警告。
调用isset()
只会告诉你是否设置了变量;它不会告诉您有关变量值的任何信息,因此您不能单独依赖它。
希望有帮助。