PHP相等性检查未引发错误
我刚刚在一个PHP脚本中找到了以下代码,我想知道为什么它没有导致PHP报告错误PHP相等性检查未引发错误,php,syntax-error,equality,Php,Syntax Error,Equality,我刚刚在一个PHP脚本中找到了以下代码,我想知道为什么它没有导致PHP报告错误 $current_name == ($type != 3) ? $name : '' ; 这是一个打字错误,代码应该是: $current_name = ($type != 3) ? $name : '' ; 它在语法上是正确的。计算三元表达式,然后与$current\u name进行比较。不使用整个表达式的结果。它在语法上是正确的。计算三元表达式,然后与$current\u name进行比较。整个表达式的结果没
$current_name == ($type != 3) ? $name : '' ;
这是一个打字错误,代码应该是:
$current_name = ($type != 3) ? $name : '' ;
它在语法上是正确的。计算三元表达式,然后与
$current\u name
进行比较。不使用整个表达式的结果。它在语法上是正确的。计算三元表达式,然后与$current\u name
进行比较。整个表达式的结果没有被使用。这是一段奇怪的代码,但只是因为它不可读且无用,而不是因为它无效。它使用,这基本上是一个速记if
构造,格式为条件?如果为真:如果为假
此代码执行以下操作:
$type!=3
。如果$type
为3
,则返回false
,否则返回true
$current_name
进行比较true
(即$current\u name==true
),则返回$name
。否则(即$current\u name==false
)返回'
当然,所有这些都毫无用处,因为语句中没有赋值。这是一段奇怪的代码,但这只是因为它不可读且无用,而不是因为它无效。它使用,这基本上是一个速记
if
构造,格式为条件?如果为真:如果为假
此代码执行以下操作:
$type!=3
。如果$type
为3
,则返回false
,否则返回true
$current_name
进行比较true
(即$current\u name==true
),则返回$name
。否则(即$current\u name==false
)返回'
当然,所有这些都毫无作用,因为语句中没有赋值。您不需要这些偏执[我的意思是:($type!=3)?$name:''),但您将有效地比较$current_name和($type!=3)为什么要这样做,该语句没有错。它返回一个布尔值。尝试
var\u dump($current\u name==($type!=3)?$name:“”)
@feeela出于某种原因,我认为内联比较是不允许的,因为它们什么都不做。你不需要这些偏执[我的意思是:($type!=3)?$name:”),但你将有效地比较$current_name和($type!=3)。为什么要这样做,那句话没有错。它返回一个布尔值。尝试var\u dump($current\u name==($type!=3)?$name:“”)
@feeela出于某种原因,我认为内联比较是不允许的,因为它们什么都不做。你确定它的实际计算结果不是:($current\u name==true)
或($current\u name==false)
,具体取决于($type!=3)
然后基于$current\u name==x
返回$name
以作废?@Alexander是的,你是对的--我认为?:
比它高。你确定它的实际计算结果不是:($current\u name==true)
或($current\u name==false)
取决于($type!=3)
,然后根据$current\u name==x
返回$name
以作废?@Alexander是的,你是对的--我想?:
的值比它高。