我的php文件中有下面这段遗留代码:
$id = $request->getParameter('id', null);
if ($isCopy = null !== $id) {
// Do domething
}
我所理解的是,它从URL获取参数'id‘并检查它是否为空。我想了解一下这个逻辑是如何工作的?if ($isCopy = null !== $id)
发布于 2019-10-04 16:27:35
它的解释如下:
$id = $request->getParameter('id', null);
if ($isCopy = (null !== $id)) {
// Do domething
}
$isCopy从null !== $id比较中接收布尔结果,然后if语句使用它的值。
不过,应该避免这种构造。改用下面的代码:
$id = $request->getParameter('id', null);
if ($id !== null) {
// Do domething
}
或者,如果您要将计算结果传递到另一块代码,并希望突出显示空id的含义:
$id = $request->getParameter('id', null);
$isCopy = $id !== null;
if ($isCopy) {
// Do domething
}
发布于 2019-10-04 16:27:24
它检查$id
是否不为空,而不是在$isCopy
变量中赋值为true或false
发布于 2019-10-04 16:48:40
在语句中
if ($isCopy = null !== $id) {
PHP将根据其求值规则对运算符进行求值。比较运算符(如!==
)在=
之前进行计算。
因此,首先评估null !== $id
。null与id
进行比较。注意,这不是相同的比较运算符!==
,因此它将计算为true (如果id
的值和类型不为空)或false (id
的值和类型不为空)。
最后,将赋值操作$isCopy
赋值给比较结果。它要么为真,要么为假。
如果$id
不是null类型,则$isCopy
将为true,因此仅当id
不是null类型时才会处理if语句。
注意,$id
在这里可以有一个false值,但不是null类型。
虽然PHP在逻辑上不需要,但最好使用圆括号来强制优先。括号具有最高的运算符优先级。这使得代码更加清晰,并且可以在程序员不确定运算符求值的顺序时帮助消除错误。
if ($isCopy = (null !== $id)) {
https://stackoverflow.com/questions/58232482
复制相似问题