Редактировать: Пожалуйста, учтите это перед понижением.Я оставляю это здесь, чтобы служить «что не делать».Я бы удалил его, потому что это плохо, но тогда никто не учился бы на моих ошибках.
НЕ ДЕЛАЙТЕ ЭТОГО - читайте комментарии, чтобы узнать, почему это плохо
Мой ответ будет совершенно другим, но я совершенно другой парень ...
Я ПРОСТО обнаружил, что это будет работать.Вместо всего этого, просто присвойте переменные программно!Я думаю, что у меня есть некоторый рефакторинг, чтобы сделать ... вы знаете весь мой код ...
if (!is_array($_POST)){exit "$_POST isn't an array";}
foreach ($_POST as $param => $value){
${$param} = secure($value);
}
//now you have a set of variables that are named exactly as the posted param
//for example, $_POST['personal_info_first_name'] == $personal_info_first_name
if ($payment_method == "Pay by credit card."){
//do stuff that you were gonna do anyways
} else if ($payment_method == "Pay by new credit card.") {
if ($card_number && $expiration_date && $security_code){
//do stuff that you were gonna do anyways
} else {
exit("info missing for credit card transaction");
}
} else {
exit("unknown payment method")
}
function secure($input){
//sanitize user input
}
Если вы используете этот код, то не имеет значения, что является нулевым, а что нетв пределах foreach, потому что все, что является нулевым, просто не будет сделано.Затем вы можете использовать более приятный на вид код (и, возможно, более быстрый код), чтобы проверить все, что требуется.