PHP && 短路求值运算符

3
在JavaScript中,我可以进行以下操作:
console.log( 'a' || 'b' ); // Prints 'a'

在PHP中,相当于这样写:
echo 'a' ?: 'b'; // Prints 'a'

在JavaScript中:
console.log( 'a' && 'b' ); // Prints 'b'

我的问题是,PHP中与JavaScript的'a' && 'b'相当的是什么?

如果我在PHP中执行以下操作:

echo 'a' && 'b'; // Prints 1

正如您所看到的,它会将类型转换为布尔值1(true)。

PHP中哪个运算符可以让我得到实际的值,就像JavaScript的&&一样?

P.S. 我知道三元表达式,请不要建议使用它。


如果你不想用三元运算符,那么在PHP中上述方法是行不通的,这里没有其他选择。 - Mathijs Segers
你所发布的JavaScript代码滥用了JavaScript类型转换功能,在生产环境中不应使用。在逻辑上,布尔运算符应该求值为布尔值,而JavaScript在伪装成布尔值时仍保留原始值,这是JavaScript独有的怪癖,在其他语言中基本不存在。 - Dai
PHP中的逻辑操作总是返回布尔值,您无法使用此表达式在PHP中获得相同的行为,您必须通过代码使用“if”语句或“三元运算符”来实现。https://www.php.net/manual/en/language.operators.logical.php#77411 - ROOT
1个回答

1

&& 是一个逻辑运算符,它的结果为 true | false。PHP 中有一个略微不同的运算符,名为空合并运算符,用符号??表示。它判断第一个操作数是否为null。如果是null,则结果为语句的第二个操作数。

$variable = 'String';
return $variable ?? 'default'; // results in 'String'

$variable = null;
return $variable ?? 'default'; // results in 'default'

关于运算符更多内容:https://wiki.php.net/rfc/isset_ternary


这个很接近了,但它只能处理NULL。在PHP中是否有类似的运算符可以处理所有falsy值?例如,-1,""等等。 - GTS Joe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接