Назначение PHP со значением по умолчанию - PullRequest
9 голосов
/ 28 января 2011

Какой лучший способ сделать следующее, который не вызывает f () дважды?

$x = f() ? f() : 'default';

Ответы [ 5 ]

26 голосов
/ 28 января 2011

В PHP 5.3 вы также можете сделать:

  $a = f() ?: 'default';

См. руководство по?: Оператор .

8 голосов
/ 28 января 2011

Это, кажется, работает нормально:

$x = f() or $x = 'default';
2 голосов
/ 28 января 2011
function f()
{
  // conditions 
  return $if_something ? $if_something : 'default';
}

$x = f();
1 голос
/ 28 января 2011
$x = ($result = foo()) ? $result : 'default';

тест

0 голосов
/ 28 января 2011

Вы можете сохранить его в переменной. TestCase:

function test() {
        echo 'here';
        return 1;
}

$t = test();
$x = $t ? $t : 0;
echo $x;
...