PHP: что альтернатива empty(), где строка "0" не считается пустой?
Возможный дубликат:
Фиксирование пустой функции 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
Я не думаю, что могу определить вспомогательную функцию для этого, поскольку переменная может быть undefined (и поэтому не может быть передана как параметр).
Ответы
Ответ 1
Ответ на этот вопрос заключается в том, что невозможно сократить то, что у меня уже есть.
Подавление уведомлений или предупреждений - это не то, что я хочу сделать, поэтому мне нужно будет проверить, были ли empty() или isset() перед проверкой значения, и вы не можете проверить, что что-то пусто() или isset() внутри функции.
Ответ 2
Это должно делать то, что вы хотите:
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), вы не сможете передать переменную undefined в пользовательские функции по значению. И, как указывает меркатор, вы всегда должны использовать E_ALL, чтобы соответствовать лучшим практикам. Эта ссылка (комментарий № 11), в которой содержится информация о том, почему вы не должны использовать любую форму подавления ошибок для повышения производительности и удобства обслуживания/отладки.
См. ответ orlandu63 о том, как передать аргументы в пользовательскую функцию по ссылке.
Ответ 3
function isempty(&$var) {
return empty($var) || $var === '0';
}
Ключ - это оператор &
, который передает переменную reference, создавая ее, если она не существует.
Ответ 4
if ((isset($var) && $var === "0") || !empty($var))
{
}
Таким образом вы введете if-construct, если переменная установлена AND равна "0", или переменная установлена AND not = null ( "0", null, false)
Ответ 5
if(isset($var) && ($var === '0' || !empty($var)))
{
}
Ответ 6
function Void($var)
{
if (empty($var) === true)
{
if (($var === 0) || ($var === '0'))
{
return false;
}
return true;
}
return false;
}
Ответ 7
Если ($ var!= null)