PHP IF / Type Issue

1

Попытка получить разъяснения по этому поводу. Имейте тестовую форму, в которой вы отправляете письмо, и оно дает соответствующее сообщение.

if ($letter = "A") { $message = "First letter."; }
if ($letter = "B") { $message = "Second letter."; }
if ($letter = "C") { $message = "Third letter."; }

Он продолжает давать последнее сообщение $, возможно, в этом случае "Третье письмо". Я знаю, что это имеет какое-то отношение к оператору/условному выражению и = sign, просто не уверен, что правильно использовать. Благодарю!

  • 4
    если вы хотите, чтобы это правда, тогда должно быть, if ($letter == "A") использовать ==
Теги:
if-statement

3 ответа

3

== Операторы сравнения PHP

С == означает $x == $y, он возвращает true, если $ x и $ y имеют одинаковые пары ключ/значение

= вызванный оператор назначения PHP

и = означает $x = $y Левый операнд получает значение выражения справа

Подробнее здесь

2

= является оператором присваивания, поэтому вы в основном спрашиваете: "Работало ли это, чтобы назначить букву" А "?"? Это всегда будет верно.

Оператор сравнения ==, поэтому он должен быть, if ($letter == "A")... и так далее.

  • 0
    Оператор = фактически возвращает значение, которое он установил. if ($letter = "A") - это то же самое, что и $letter = "A"; if ($letter) . Это не всегда может быть правдой, например, что если вы сделали if($test = false) ?
  • 0
    Я имел в виду только пример $letter = "A" , иначе вы правы. :)
2

= устанавливает значение $letter в значение, и поскольку этот параметр работал, он возвращался true каждый раз, поэтому на самом деле $message устанавливалось каждый раз, но осталось только последнее.

Используйте == для сравнения. Или еще лучше, у вас есть структура данных для ответа, а затем вытащите ее оттуда:

$answers = array(
    'A' => 'First letter.',
    'B' => 'Second letter.',
    'C' => 'Third letter.'
);
$message = array_key_exists($letter, $answers) ? $answers[$letter] : '';
  • 0
    Оператор = фактически возвращает значение, которое он установил. if ($letter = "A") - это то же самое, что и $letter = "A"; if ($letter) . Это не всегда может быть правдой, например, что если вы сделали if($test = false) ?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню