PHP7 Null Coalescing или if / then стенография — оценивать, а не возвращать

В течение долгого времени я хотел быть в состоянии сделать это без небольшого дополнительного бесполезного:

$test = 'test';
echo !empty($test2) ? 'something before ' . $test2 : '';

Это вернет пустую строку, потому что $test2 не определено.

$test = 'test';
$test2 = 'test2';

echo !empty($test2) ? 'something before ' . $test2 : '';

Это возвращает "Something before test2" когда $test2 определено.

Не имеет значения, если : ''; изменено на : false; или же : null; потому что здесь все они будут оцениваться в пустую строку. Так что это действительно было Почему это невозможно сделать if/then, и только if/then/else?

С нулевым объединяющим двойным знаком вопроса в PHP7 ?? Оператор, начинает казаться, что это становится ближе к возможности сделать это. Но я не думаю, что этот оператор действительно делает свое дело.

$test = 'test';
$test2 = 'test2';

echo $test2 ?? 'test3';

У нас есть «если $test2 не является null, а затем просто верните его прямо сейчас. «Так что мы не можем добавить»Something before«к этому.

Троичный оператор ?: имеет подобную похожую проблему, где этот сценарий невозможен, потому что он немедленно возвращает истинное значение. Я не особо против !empty() так как это имеет смысл, почему это необходимо, но всегда придерживаясь : ''; кажется немного грубоватым для общей картины …

0

Решение

Да, это возможно, используйте && оператор.

$test = 'test';
$test2 = 'test2';

!empty($test2) && echo 'something before ' . $test2;

Вторая половина строки будет выполняться только в том случае, если первая половина соответствует значению true.

РЕДАКТИРОВАТЬ

Следует отметить, что это, вероятно, плохая практика, так как это может затруднить чтение, но это работает.

0

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

Других решений пока нет …

По вопросам рекламы [email protected]