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进行比较。整个表达式的结果没

我刚刚在一个PHP脚本中找到了以下代码,我想知道为什么它没有导致PHP报告错误

$current_name == ($type != 3) ? $name : '' ;
这是一个打字错误,代码应该是:

$current_name = ($type != 3) ? $name : '' ;

它在语法上是正确的。计算三元表达式,然后与
$current\u name
进行比较。不使用整个表达式的结果。

它在语法上是正确的。计算三元表达式,然后与
$current\u name
进行比较。整个表达式的结果没有被使用。

这是一段奇怪的代码,但只是因为它不可读且无用,而不是因为它无效。它使用,这基本上是一个速记
if
构造,格式为
条件?如果为真:如果为假

此代码执行以下操作:

  • 检查
    $type!=3
    。如果
    $type
    3
    ,则返回
    false
    ,否则返回
    true
  • 将#1的结果与
    $current_name
    进行比较
  • 如果#2为
    true
    (即
    $current\u name==true
    ),则返回
    $name
    。否则(即
    $current\u name==false
    )返回
    '

  • 当然,所有这些都毫无用处,因为语句中没有赋值。

    这是一段奇怪的代码,但这只是因为它不可读且无用,而不是因为它无效。它使用,这基本上是一个速记
    if
    构造,格式为
    条件?如果为真:如果为假

    此代码执行以下操作:

  • 检查
    $type!=3
    。如果
    $type
    3
    ,则返回
    false
    ,否则返回
    true
  • 将#1的结果与
    $current_name
    进行比较
  • 如果#2为
    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是的,你是对的--我想
    ?:
    的值比它高。