Php 函数和OR运算符

Php 函数和OR运算符,php,Php,PHP中是否有以下缩写: function a() {...} function b() {...} $c = a(); $c = ($c) ? $c : b(); 在javascript中,您只需执行以下操作: $c = a() || b(); 但在PHP中,如果您这样做,$c将是一个布尔值(这是正常的,但我想知道是否存在另一个符合我要求的速记) 更新 谢谢你们的回答 最短的方法似乎是: $c = a() ?: b(); 我个人也喜欢: $c = a() or $c = b(); 为

PHP中是否有以下缩写:

function a() {...}
function b() {...}

$c = a();
$c = ($c) ? $c : b();
在javascript中,您只需执行以下操作:

$c = a() || b();
但在PHP中,如果您这样做,
$c
将是一个
布尔值(这是正常的,但我想知道是否存在另一个符合我要求的速记)

更新
谢谢你们的回答

最短的方法似乎是:

$c = a() ?: b();
我个人也喜欢:

$c = a() or $c = b();
为了获得良好的可读性。

这可能适用于:

$c = ($c) ? : b();

我喜欢这样,但这是一个偏好的问题

if( !$c=a() ){
    $c=b();
}


我想你是在找这个


不过我不确定你要干什么。

有可能像这样使用黑魔法。不过,我更愿意写得长一些

function a() {
    return false;
}
function b() {
    return true;
}

($c = a()) || ($c = b());

echo $c;
您可以这样做:

$c = a() OR $c = b();

为了您的利益,您可以使用赋值运算符

($c = a()) || ($c = b());
echo $c;

下面是一个演示:

不可能像在Javascript中那样进行,但可以使用三元结构的简短版本:

$c = a() ?: b();
另一种方法是使用
的较低优先级。它并没有那么漂亮,但实际上更接近于用Javascript实现它的方式:

$c = a() or $c = b();
表示上述内容的另一种方式是用括号括起来,以便更容易理解:

($c = a()) or ($c = b());
赋值运算符=,具有比“或”运算符更高的优先级(但不要将其与
|
运算符混淆),这意味着如果第一个部分的计算结果为
,则将不会执行
之后的部分。基本上与此相同:

if ($c = a()) {
    // Do nothing
} elseif ($c = b()) {
    // Do nothing
}
这两个表达式都是赋值为
true
false
。如果第一个表达式是
true
,则
$c
将是
a()
。否则,将尝试第二个表达式,因为它是最后一个表达式,而且之后什么也不做,
$c
将只等于
b()


无论如何,这不是一个真正重要的问题。如果你把时间花在担心变量赋值的美观上,那么你就不会担心正确的事情。

@tamaspp-yes;是5.3及以上。(请告诉我你没有使用比这个版本更旧的版本)@Jack:它似乎可以工作:如果a()返回true,这将设置$c=$c,而不是将a()赋值给$cYes,这不是一个非常重要的问题。然而,我喜欢学习新东西,提高我的技能。谢谢你的回答。
($c = a()) or ($c = b());
if ($c = a()) {
    // Do nothing
} elseif ($c = b()) {
    // Do nothing
}