Я не понимаю, почему это происходит с пустыми переменными PHP - PullRequest
0 голосов
/ 05 сентября 2018

Я пытаюсь сделать это:

if ($var !== ""){
    $message = "whatever";
}

Но в конечном итоге придется сделать это:

if ($var == ""){
    //do nothing
} else {
    $message = "whatever";
}

Почему это происходит? Разве оба из них не означают одно и то же?

Ответы [ 3 ]

0 голосов
/ 06 сентября 2018

Поскольку $var действительно string, просто используйте:

if ($var){//any non-empty string will work fine as it will be casted to boolean automatically
    $message = "whatever";
} 
0 голосов
/ 06 сентября 2018

!= и == являются противоположностями (операторы нестрого сравнения).

!== и === являются противоположностями (операторы строгого сравнения, где значение должно точно соответствовать тому, что вы сравниваете).

Если вы используете != вместо !==, ваш код должен работать. Но:

  • Вы должны понимать, каково действительное значение вашей переменной - это не пустая строка. Вы можете использовать print_r( $var );, чтобы увидеть его.
  • Лучше использовать операторы строгого сравнения === и !==, потому что они имеют четко определенное поведение, которое легче запомнить и отладить.
0 голосов
/ 05 сентября 2018

$ var может быть != '', но не = '', например .. null

  if ($var == ""){
   //do nothing
 } else {
   if (is_null($var) {
     $message ='NULL';
   } else {
     $message = "whatever";
   }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...