PHP IF速记变化类似于三元

时间:2012-09-13 14:33:01

标签: php

还有另一种写这样的方法吗?

$var2 = ($var1) ? $var1 : 'bar';

实施例..

$var1 = 'foo';
$var2 = ($var1) ? $var1 : 'bar';
echo $var2; //Outputs foo

$var1 = false;
$var2 = ($var1) ? $var1 : 'bar';
echo $var2; //Outputs bar

我希望

$var2 = $var1 || 'bar';

会起作用,因为我之前认为我已经看过了,但事实并非如此。有什么想法吗?

谢谢!

3 个答案:

答案 0 :(得分:4)

答案 1 :(得分:1)

几乎正确。自PHP 5.3(我相信)以来,有一个新的结构:

<?php
$foo = false;
$foo = $foo ?: 'bar';

echo $foo; // $foo is now "bar".

答案 2 :(得分:-2)

PHP 5.3之前没有。

如果与5.3之前版本的PHP的兼容性很重要,我建议制作一个方法;

function b($a, $b) { return $a?$a:$b; }

B表示最佳,也是短暂的。

用法:

echo b($username, "Not logged in");