Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';这两个词之间有什么区别;isset($string)"&&引用@$“字符串”;关于PHP?_Php - Fatal编程技术网

什么';这两个词之间有什么区别;isset($string)"&&引用@$“字符串”;关于PHP?

什么';这两个词之间有什么区别;isset($string)"&&引用@$“字符串”;关于PHP?,php,Php,PHP中的isset($string)和@$string有什么不同 这是双向的,那么有什么区别呢 if(isset($string)) .... if(@$string) .... 函数isset()检查变量,如果变量存在,则返回true。签名@忽略错误。给出几乎相同的值。下一个代码可能会显示: if(isset($string)) print 1; // no print if(@$string) print 2; // no print

PHP中的
isset($string)
@$string
有什么不同

这是双向的,那么有什么区别呢

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


if(@$string)
 ....
函数
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
  • 如果给定变量存在且不是
    null

    @$var
    如果在松散比较中
    $var
    的值为

    !==null
    ==true
    匹配不同的值

  • @$var
    的情况下,如果
    $var
    不存在,将在内部生成一个错误,并通过
    @
    将其输出抑制。这是一个更为昂贵的操作,它可能会在执行过程中触发自定义的错误处理程序。如果有其他选择,千万不要使用它

  • *一个不存在的变量的值被替换为
    null
    ,它等于
    false

    使用
    isset($str)
    @$str
    不同

    如果
    $str

    如果
    $str
    为,则
    @$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;
    }
    

    还应注意的是,
    @
    除了是一个坏习惯外,还会导致一个。

    首先检查变量是否已定义且不为空。第二个是检查它的真实值,
    @
    符号会抑制任何错误。我们可以同时使用这两个符号吗?isset(@$string)?@Abudayah
    isset(@$string)
    没有任何意义。@Abudayah:The用于抑制来自以下语句的任何错误。强烈建议不要使用
    @
    运算符。它隐藏了行中可能出现的所有错误。如果未设置
    $string
    ,则
    If($string)
    将抛出警告(并且仍然是
    false
    ,因为
    If
    $string
    转换为布尔值)。
    @
    隐藏了它。@RocketHazmat-对于完整的比较列表<代码>$string=“0”通过
    isset
    ,但不是
    @$str
    。仅供参考:三个反勾号仅在GitHub的降价时有效,这里不起作用。好的,我会尝试记住它:)