Расположение заголовка PHP не работает должным образом

Может кто-нибудь указать мне, почему нижеследующее не работает? Он перенаправляет только на первое место, даже если я выбираю разные переключатели.

PHP:

if (isset($_POST['submit'])) { if (!empty($_POST['electronics'])) { if ($_POST['electronics'] = "camera") { header("location: camera.php"); exit(); } if ($_POST['electronics'] = "cell") { header("location: cellphones.php"); exit(); } if ($_POST['electronics'] = "cable") { header("location: cables.php"); exit(); } if ($_POST['electronics'] = "tv") { header("location: tv.php"); exit(); } } ... 

HTML:

 <form action="" method="post"> <input type="radio" name="electronics" value="cell"/> <input type="radio" name="electronics" value="camera"/> <input type="radio" name="electronics" value="cable"/> <input type="radio" name="electronics" value="tv"/> <input type="submit" name="submit"> </form> 

Related of "Расположение заголовка PHP не работает должным образом"

Вы должны использовать оператор сравнения == вместо =

 if (isset($_POST['submit'])) { if (!empty($_POST['electronics'])) { if ($_POST['electronics'] == "camera") { header("location: camera.php"); } else if ($_POST['electronics'] == "cell") { header("location: cellphones.php"); } else if ($_POST['electronics'] == "cable") { header("location: cables.php"); } else if ($_POST['electronics'] == "tv") { header("location: tv.php"); } } ... 

Кроме того, exit() также избыточен, поскольку вы уже перенаправляетесь на другую страницу.

= задание. == равенство. Вы путаете эти два.

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

Итак, верно следующее:

 "camera" == $_POST['electronics'] = "camera" 

Что в вашем случае истинно, чтобы удовлетворить if

Это то же поведение, что позволяет делать несколько присвоений с одним значением.

например:

 $foo = $bar = 10; 

$foo и $bar назначаются 10.