我似乎找不到任何关于此的讨论。
在 JavaScript 中检查某些内容是否存在,如果不存在则使用默认值,如下所示:
var myvariable = mysetting || 3
据我了解,在 PHP 中,可以这样做同样的事情:
$myvariable = $mysetting ?: 3;
我完全不喜欢这个吗?我理解不使用 isset()
和 not_empty()
等的含义,但如果我只是想知道变量是否存在并且是否真实,否则使用默认值- 我认为这应该有效。这个语法有什么隐藏的不好的地方吗?
最佳答案
因为它不起作用。该代码仍然会抛出一个通知 Notice: Undefined variable: mysetting in C:\wamp\www\x.php on line
,该通知可能对用户可见,具体取决于 PHP 设置。除此之外,它会起作用。如果通知被抑制,那么最终结果就是正确的。
因此,为了解决这个问题,您可以使用 isset
,它实际上并不是一个函数,而是一个语言构造,并且是专门为执行此检查而设计的:
$myvariable = isset($mysetting)? $mysetting: 3;
或者您可以使用 @
运算符抑制通知:
$myvariable = @$mysetting ?: 3;
对于这种具体情况,也许这是可以接受的,但一般来说,使用 @
会被许多人所反对。就我个人而言,我宁愿使用更多的角色并让它感觉不那么“肮脏”,但这是一个意见问题。
人们可能不使用它的另一个原因是它相对较新(PHP 5.3)。并非每个人都知道这种新语法或对其感到满意。它们已经被用来isset
很多年了,而且旧习惯很难改掉。
关于PHP,为什么没有人使用? : operator?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26264770/