PHP - логический ответ не работает должным образом - PullRequest
0 голосов
/ 26 апреля 2020

У меня есть следующее:

 (bool)$is_sent = $this->send_contact($message_name);

Что нужно сделать выше, это вернуть TRUE, если электронное письмо отправлено, и сообщение об ошибке, если электронное письмо не отправлено. Итак, я написал это:

$this->send_contact() {
    if(!$mail->send()) {
        return $mail->ErrorInfo;
    } else {
        return TRUE; // success
    }
}

Если я дам дамп $ is_sent, когда сообщение успешно, оно возвращает 1, как и ожидалось. Если я выкидываю $ is_sent при появлении ошибки, я вижу сообщение об ошибке.

У меня следующее:

 if (
     ($this->MH_contact_model->contact_create($submitted_data) !== FALSE)  
     && 
     ($is_sent ==  TRUE)  ) 
 {  do_something(); }

Проблема в том, что в обоих случаях $ is_sent всегда как-то всегда вычисляется как true, но когда я отображаю его на экране, оно содержит сообщение об ошибке. Мне нужно, чтобы оно было ЛОЖНЫМ или НЕ ИСТИННЫМ.

Как мне это сделать?

1 Ответ

1 голос
/ 26 апреля 2020

Ваша проблема в том, что непустая строка считается истинной в логическом контексте (см. руководство ), поэтому $is_sent == TRUE всегда истинно. Вместо этого вам нужно использовать строгое сравнение:

($is_sent === TRUE)
...