AMB*_*AMB 1 php conditional-statements
我正在尝试检查$ _GET ['id']是否已设置并且是数字否则会导致代码执行死亡.
以下两个代码对我有用,但想知道它们之间的区别是什么?
php条件1
<?php
if(!isset($_GET['id']) || (isset($_GET['id']) && !is_numeric($_GET['id']))) {
die();
}
Run Code Online (Sandbox Code Playgroud)
php条件2
<?php
if(!isset($_GET['id']) || !is_numeric($_GET['id'])) {
die();
}
Run Code Online (Sandbox Code Playgroud)
不同之处在于,如果$_GET['id']
设置了第一个,则会进行不必要的额外检查.PHP使用所谓的短路布尔评估,这意味着如果a的左侧||
为真,则不需要评估右侧.所以,即使在第二个例子中,!is_numeric($_GET['id'])
除非isset($_GET['id'])
是真的,否则永远不会得到评估.
逻辑上这些陈述是等价的.
归档时间: |
|
查看次数: |
56 次 |
最近记录: |