这个赋值结构叫做什么?你能用Php做吗?

时间:2010-11-15 17:56:17

标签: javascript expression variable-assignment logical-operators

我经常在Javascript中使用以下构造:

var foo = other_var || "default_value";

在Javascript中,如果左侧是假的,则会分配右侧的值。

它非常方便,可以节省更长时间和不必要的显式三元表达式。

这种结构有名称吗?

额外奖励:在不使用三元运算符的情况下,有没有在Php中执行此操作的技巧?

PS:另一种变体是如果你没有获得真值,而不是给出默认值,则会抛出错误:

var foo = something || alert("foo is not set!");

5 个答案:

答案 0 :(得分:2)

逻辑或(通常||)运算符在许多语言中都有很大不同。

在某些(例如 C,C ++ )中,它的工作方式如下:“评估左侧;如果是,则返回true,否则评估右侧并返回true如果它是真的或否则。“结果总是布尔在这里。

在其他方面(比如 Javascript,Python ,我相信PHP也是如此)它更像是:“评估左侧;如果是真的,则返回它,否则评估正确-hand side并返回结果。“然后结果可以是任何类型,你可以做类似的构造:

a = (b || c); // equivalent to a = b ? b : c;

或非常喜欢:

function compare(A, B) { // -1 if A<B, 0 if A==B, 1 if A>B
    return B.x - A.x || B.y - A.y;
}

答案 1 :(得分:1)

我相信它只是被称为OR构造。这里有很多关于使用作业的好例子: http://php.net/manual/en/language.operators.assignment.php

答案 2 :(得分:1)

just a logical OR operator。请点击链接获取有关javascript的更多信息。

来自文档中的示例:

o1=true || true       // t || t returns true
o2=false || true      // f || t returns true
o3=true || false      // t || f returns true
o4=false || (3 == 4)  // f || f returns false
o5="Cat" || "Dog"     // t || t returns Cat
o6=false || "Cat"     // f || t returns Cat
o7="Cat" || false     // t || f returns Cat

编辑:关于奖励,看起来好像你可以通过以下方式在最新版本的PHP中使用三元组做类似的事情:

expr1 ?: expr3

From the PHP docs:

  

从PHP 5.3开始,可以省略三元运算符的中间部分。表达式 expr1?:expr3 返回 expr1 ,如果 expr1 评估为 TRUE expr3 否则。

我不熟悉PHP,所以我很想知道结果。

答案 3 :(得分:1)

这有效:

$mytruevalue = true;
$foo = $mytruevalue or $foo = "20";
echo $foo;

以上打印"1",因为这是true的字符串表示形式($mytruevalue为真)。

$myfalsevalue = false;
$foo = $myfalsevalue or $foo = "20";
echo $foo;

然而,这会打印"20",因为$myfalsevalue为假。

如果两个值都等于false,则不会输出任何内容。

希望这有帮助。

答案 4 :(得分:0)

  

这种名称有没有   构造?

the logical OR operator

  

奖励:有没有诀窍可以做到这一点   Php没有使用三元运算符?

不,使用PHP,您只能在ternay操作员的帮助下才能这样做。