1

有没有另一种方式来写这样的东西?

$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';

会起作用,因为我以为我以前见过,但事实并非如此。有任何想法吗?

谢谢!

4

3 回答 3

4
$var2 = $var1 ?: 'bar';

自 PHP 5.3 以来的新功能。http://php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary

于 2012-09-13T14:38:16.227 回答
1

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

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

echo $foo; // $foo is now "bar".
于 2012-09-13T14:39:09.793 回答
-2

PHP 5.3 之前没有。

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

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

B代表最好,也很短。

用法:

echo b($username, "Not logged in");
于 2012-09-13T14:37:37.497 回答