В течение долгого времени я хотел быть в состоянии сделать это без небольшого дополнительного бесполезного:
$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()
так как это имеет смысл, почему это необходимо, но всегда придерживаясь : '';
кажется немного грубоватым для общей картины …
Да, это возможно, используйте &&
оператор.
$test = 'test';
$test2 = 'test2';
!empty($test2) && echo 'something before ' . $test2;
Вторая половина строки будет выполняться только в том случае, если первая половина соответствует значению true.
РЕДАКТИРОВАТЬ
Следует отметить, что это, вероятно, плохая практика, так как это может затруднить чтение, но это работает.
Других решений пока нет …