В течение долгого времени я хотел иметь возможность сделать это без небольшого лишнего мусора:
$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()
, так как это имеет смысл, почему это необходимо, но всегда прибавлять : '';
кажется довольно грубым для общего шаблона...
!empty()
... Это решит множество распространенных случаев, если вы сможете проверить это условие, и если оно выполнено, используйте переменная (либо echo, либо assign). Итак, учитывая, что нам просто нужно сначала протестировать переменную, чтобы попробовать и использовать ее, часто нам не нужен этот случайelse
... И, похоже, нет другого способа это :( Хорошие ссылки, однако! - person groovenectar   schedule 29.10.2018