Один оператор PHP для использования результата оператора IF для присваивания

У меня есть ситуация, когда у меня есть функция, которая выполняет поиск в базе данных и возвращает либо значение, либо ошибку. Я хотел бы иметь один оператор, который вызывает функцию и в зависимости от результата либо назначает возвращаемое значение, либо значение по умолчанию.

Используя оператор tenary, я мог сделать что-то вроде этого:

$val=(getVal($param)!='error' ? getVal($param) : "default");

но я не хочу дважды вызывать getVal, потому что он оправдывает запросы к базе данных и является дорогостоящим по производительности.

Я мог бы также сделать это в двух заявлениях, но если возможно, я просто хочу одно. Ценю любую помощь.

1

Решение

Попробуй это

$val=(($result=getVal($param))!='error' ? $result : "default");

1

Другие решения

Есть только два способа, которыми я знаю (возможно, есть и другие).

Либо вы сначала присваиваете результат функции переменной, а затем используете if:

$res = getVal($param);
$val = ($res != 'error' ? $res : "default");

Примечание. Возможно, это лучший вариант как для удобочитаемости, так и для производительности.


Или вы модифицируете функцию из этого:

function getVal($param) {
...
return $something;
}

к этому:

function getVal ($param, &$result) {
...
$result = $something;
return $something;
}

И использовать это:

$val = (getVal($param,$res) != 'error' ? $res : "default");

Но это выглядит подозрительно для меня

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector