2014-01-24 2 views
0

просто сделал некоторые проверки и хотел узнать, что это значит, а не просто работает.

Допустим, у меня есть:

$email = $_POST['email']; 
if(!$email) { 
echo 'email empty' 
} 

Что только имея переменную и без контроля за его = что-то значит?

Я думал

$variable 

по его собственной означает, что он вернулся к этой переменной, как верно.

Так я также использую если

!$variable 

это означает ложь.

Просто хотел прояснить фактическое значение только с использованием самой переменной.

Является ли также плохой практикой сравнивать переменную за то, что она пуста?

Так что лучше использовать

$email == '' 

Чем

!$email 

К сожалению, если его маленький вопрос без реального ответа быть решена, так как на 100% понимать как то, что я кодирования фактически работает.

+2

Любая переменная, используемая в выражении, оценивается как ложная или правдивая. фальшивость означает пустую, нулевую, равную 0 или false. правду - это что-то еще. поэтому, тестирование! $ var тестов для всех видов значений, которые вы считаете ложными. – njzk2

ответ

2

$email = '' освободит переменную. Вместо этого вы можете использовать == или ===.

В этом случае лучше использовать функцию PHP isset() (documentation). Функция проверяет, установлена ​​ли переменная, а не NULL.

3

PHP оценивает, является ли «$email» «правдивым», используя правила, определенные в http://www.php.net/manual/en/language.types.boolean.php.

When converting to boolean, the following values are considered FALSE: 

the boolean FALSE itself 
the integer 0 (zero) 
the float 0.0 (zero) 
the empty string, and the string "0" 
an array with zero elements 
an object with zero member variables (PHP 4 only) 
the special type NULL (including unset variables) 
SimpleXML objects created from empty tags 

PS $email= '' присвоит '' к $email.

1

Когда вы делаете if(<expression>), он вычисляет <expression>, а затем преобразует его в логическое.

В docs, он говорит:

When converting to boolean, the following values are considered FALSE: 

the boolean FALSE itself 
the integer 0 (zero) 
the float 0.0 (zero) 
the empty string, and the string "0" 
an array with zero elements 
an object with zero member variables (PHP 4 only) 
the special type NULL (including unset variables) 
SimpleXML objects created from empty tags 

Every other value is considered TRUE (including any resource). 

Итак, когда вы делаете if(!$email), он преобразует $email в булево, следуя вышеприведенным правилам, то переворачивает, что логическое значение.