" isset($ string)"之间的区别是什么? &安培; " @ $弦"在PHP?

时间:2015-07-23 13:52:59

标签: php

PHP中isset($string)@$string之间有什么不同?

这有两种方式,那么区别是什么?

if(isset($string))
 ....


if(@$string)
 ....

3 个答案:

答案 0 :(得分:6)

    如果给定变量且不是isset ,则
  1. truenull
    @$var true如果$var 的价值为true,则为!== null。* / == true@$var匹配不同的值。

  2. 对于$var,如果@不存在,则会在内部生成错误并引发错误,并通过null抑制其输出。这是一个更昂贵的操作,它可能会在途中触发自定义的错误处理程序。如果有替代方案,请不要使用它。

  3. *不存在的变量值由false替换,等于{{1}}。

答案 1 :(得分:2)

使用isset($str) @$str不一样

如果isset($str) is set and is not null,则

$str为真 如果@$strtruthy,则$str为真。

考虑以下示例:

$str = "0";

if (isset($str)) {
    // This gets printed because $str is set
    echo "Str is set" . PHP_EOL;
}

if (@$str) {
    // This is NOT printed because $str is falsy
    echo "Str is truthy" . PHP_EOL;
}

还应该注意@,除了是一个坏习惯,还会招致significant performance penalty

答案 2 :(得分:1)

函数isset()检查变量,如果变量存在则返回true。签名@忽略错误。给出几乎相同的值。下一个代码可能会显示出来:

   if(isset($string))
      print 1; // no print
   if(@$string)
      print 2; // no print

   $string = false;
   if(isset($string))
      print 3; // print 3
   if(@$string)
      print 4; // no print