Возможный дубликат:
Фиксирование пустой функции PHP
В PHP пустой () – отличный ярлык, потому что он позволяет вам проверить, определена ли переменная и не пуста.
Что бы вы использовали, когда вы не хотите, чтобы «0» (как строка) считалось пустым, но вы все еще хотите, чтобы false, null, 0 и «» считались пустыми?
То есть, мне просто интересно, есть ли у вас собственный ярлык для этого:
if (isset($myvariable) && $myvariable != "") ;// do something if (isset($othervar ) && $othervar != "") ;// do something if (isset($anothervar) && $anothervar != "") ;// do something // and so on, and so on
Я не думаю, что могу определить вспомогательную функцию для этого, так как переменная может быть неопределенной (и поэтому не может быть передана как параметр).
Это должно делать то, что вы хотите:
function notempty($var) { return ($var==="0"||$var); }
Изменить: я думаю, что таблицы работают только в предварительном просмотре, а не в реальных ответах. Поэтому для получения дополнительной информации обратитесь к таблицам сравнения типов PHP .
notempty (""): false notempty (null): false notempty (undefined): false notempty (array ()): false notempty (false): false notempty (true): true notempty (1): true notempty (0): false notempty (-1): true notempty ("1"): true notempty ("0"): true notempty ("php"): true
В принципе, notempty () является таким же, как! Empty () для всех значений, кроме «0», для которых он возвращает true .
Изменить: если вы используете error_reporting (E_ALL) , вы не сможете передать неопределенную переменную в пользовательские функции по значению. И, как отмечает mercator, вы всегда должны использовать E_ALL, чтобы соответствовать лучшим практикам. В этой ссылке (комментарий № 11) он обсуждает, почему вы не должны использовать какие-либо формы подавления ошибок для повышения производительности и удобства обслуживания / отладки.
См. Ответ orlandu63 о том, как передать аргументы в пользовательскую функцию по ссылке .
function isempty(&$var) { return empty($var) || $var === '0'; }
Ключ – это оператор &
, который передает переменную по ссылке , создавая ее, если она не существует.
if ((isset ($ var) && $ var === "0") ||! empty ($ var)) { }
Таким образом, вы введете if-конструкцию, если переменная установлена AND равна «0», или переменная установлена AND not = null («0», null, false)
Ответ на этот вопрос заключается в том, что невозможно сократить то, что у меня уже есть.
Подавление уведомлений или предупреждений – это не то, что я хочу сделать, поэтому мне нужно будет проверить, были ли empty () или isset () перед проверкой значения, и вы не можете проверить, что что-то пусто () или isset () внутри функции.
if(isset($var) && ($var === '0' || !empty($var))) { }
function Void($var) { if (empty($var) === true) { if (($var === 0) || ($var === '0')) { return false; } return true; } return false; }
Если ($ var! = Null)