如果为true,则在条件内分配变量

时间:2013-05-16 07:13:31

标签: php if-statement conditional-statements

我知道你可以在这样的条件下分配一个变量:

if ($var = $foo)

但是我不需要在条件本身做任何事情,所以我经常留下空括号。如果$var $footrue,我可以简单地以其他方式分配$var,而无需在以后做其他事情吗?

如果$foo$footrue $foofalse做其他事情,我还可以将if ($var = !$foo) { if ($var = !$bar) { //Etc... } } 分配给{{1}}吗?像:

{{1}}

基本上我希望有更多的后备/默认值。

4 个答案:

答案 0 :(得分:9)

@ chandresh_cool的建议是对的,但是为了允许多个可能性/后备,你必须嵌套三元表达式:

$var = ($foo == true) ? $foo: 
       ($bar == true) ? $bar: 
       ($fuzz == true) ? $fuzz:
       $default;

注意:前3行以冒号结束而不是分号。

然而,更简单的解决方案是执行以下操作:

$var = ($foo||$bar||$fuzz...);

答案 1 :(得分:4)

相反,你可以像这样使用三元运算符

$var = ($foo == true)?$foo:"put here what you want";

答案 2 :(得分:4)

虽然这是一篇非常古老的帖子。伪造值的回退逻辑可以这样编码。

$var = $foo ?: $bar ?: "default";

在这种情况下,当$foo是伪造值(如false,空字符串等)时,它将回退到$bar,否则它将使用$foo。 如果bar是伪造值,则它将回退到字符串default

请注意,这适用于伪造的值,而不仅仅是true

示例:

$foo = "";
$bar = null;
$var = $foo ?: $bar ?: "default";  

$var将包含文字default,因为空字符串和null被视为“虚假”值。

答案 3 :(得分:3)

您可以指定如下值:

$var = $foo;

也可以在if语句中设置它们,PHP将评估您刚刚分配的结果$ var。

我真的不明白你的问题,但你可以这样做:

if(!($var = $foo)){
   //something else.
}