什么';这两个词之间有什么区别;isset($string)"&&引用@$“字符串”;关于PHP?
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
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)?@Abudayahisset(@$string)
没有任何意义。@Abudayah:The用于抑制来自以下语句的任何错误。强烈建议不要使用@
运算符。它隐藏了行中可能出现的所有错误。如果未设置$string
,则If($string)
将抛出警告(并且仍然是false
,因为If
将$string
转换为布尔值)。@
隐藏了它。@RocketHazmat-对于完整的比较列表<代码>$string=“0”代码>通过isset
,但不是@$str
。仅供参考:三个反勾号仅在GitHub的降价时有效,这里不起作用。好的,我会尝试记住它:)