empty()是否在PHP中使用isset()?

empty()是否在PHP中使用isset()?,php,if-statement,conditional,conditional-statements,php-7,Php,If Statement,Conditional,Conditional Statements,Php 7,在 它说 注意: if( empty( $_REQUEST['data'] ) ){ return false; } if( !isset( $_REQUEST['data'] ) || isset( $_REQUEST['data'] ) && !$_REQUEST['data'] ){ return false; } 在不可访问的对象属性上使用empty()时 如果声明,将调用重载方法 这是否意味着: if( empty( $_REQUEST['data'

它说

注意:

if( empty( $_REQUEST['data'] ) ){
    return false;
}
if( !isset( $_REQUEST['data'] ) || isset( $_REQUEST['data'] ) && !$_REQUEST['data'] ){
    return false;
}
在不可访问的对象属性上使用
empty()
时 如果声明,将调用重载方法

这是否意味着:

if( empty( $_REQUEST['data'] ) ){
    return false;
}
if( !isset( $_REQUEST['data'] ) || isset( $_REQUEST['data'] ) && !$_REQUEST['data'] ){
    return false;
}
与:

if( empty( $_REQUEST['data'] ) ){
    return false;
}
if( !isset( $_REQUEST['data'] ) || isset( $_REQUEST['data'] ) && !$_REQUEST['data'] ){
    return false;
}

上述两个语句是否被视为相同的?

与同一手册相关。如果变量不存在,则不会生成警告。这意味着empty()本质上是
的简明等价物!isset($var)|$var==false
。所以是的,但是你有一个额外的检查和
$var
也应该是一样的。对于PHP7,我没有找到任何东西,但是对于PHP5.6,我找到了一个例子:如果你有
$gmp=new gmp(0)
为空($gmp)
将返回false,但
isset($gmp)&&$gmp
将抛出一个致命错误。当然,这通常不适用于
$\u请求
,因为数组应该只包含字符串和数组。@AbraCadaver我的GMP(0)示例还为等价性创建了一个意外的输出:(PHP5.6)。@jh1711:我想op实际上不是在谈论对象,而是找到了关于
\u isset
的片段。我发布的代码片段与他们的代码示例有关。@Abracadver,你说得对。我刚刚发现了一个与isset/empty相关的示例,其中一个内部类的行为与我预期的不一样,或者手册中暗示的不一样。我想你或OP也会觉得这很有趣。但如果你不这么做,我理解。