“if(!$variable)”和“if(isset($variable))”有什么区别?前者检查变量是否为假,后者检查变量是否已设置。

12
if(!$variable)if(isset($variable)) 之间的区别是什么?
3个回答

20

答案非常简单。 isset($var) 返回变量是否存在且不为 null,而!$var 判断该变量是否为true或任何评估结果为true(如非空字符串)。这在此文档页面的第一个表格中进行了总结。

另外,使用!$var 会输出一个警告,表示您正在使用未定义的变量,而isset($var) 不会提示警告。

请注意,它们是两个不同的东西:

<?php
var_dump( isset($foo) ); // false.
var_dump( !$foo );       // true, but with a warning.

$foo = false;
var_dump( isset($foo) ); // true
var_dump( !$foo );       // true.

文档页面非常有帮助。请访问文档页面获取最佳答案:https://www.php.net/manual/zh/types.comparisons.php - Yohanim

3
如果变量未设置,则在使用if(!Variable)时会收到警告。

4
这种警告应该得到鼓励……“声明”你的变量。 - user166390

0

它们是两个不同的语句

  1. 在第一个语句中,您检查变量是否为false,因此使用“!”
  2. 在这里,您检查变量是否实际设置为除null以外的某个值。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接