我有编码为复选框的数组:PHP条件语句跳过ELSEIF
<form action="CascadeFunction.php" method="post" name="cascader" id="cascader">
<input name="checkbox[]" type="checkbox" value="EMEA" /><label for="EMEA">EMEA</label><br />
<input name="checkbox[]" type="checkbox" value="NAM" /><label for="NAM">NAM</label><br />
<input class="btn btn-primary" name="Submit" type="submit" id="submit" value="POST & CASCADE" />
</form>
其中这些复选框的检查下面的代码检查。然后通过检查分解的复选框值,它将相应的电子邮件地址添加到$toList
阵列。
$checkbox = $_POST['checkbox'];
$checkboximploded = implode($checkbox);
$toList = array(
'[email protected]' => 'First Email',
'[email protected]' => 'Second Email',
);
if(!empty($_POST['checkbox'])) {
foreach ($checkbox as $value) {
if (preg_match('/EMEA/',$checkboximploded)) {
$toList["[email protected]"] = "Third Email";
$toList["[email protected]"] = "Fourth Email";
}
elseif (preg_match('/NAM/',$checkboximploded)) {
$toList["[email protected]"] = "Fifth Email";
$toList["[email protected]"] = "Sixth Email";
}
}
foreach($toList as $email => $name) {
$mail->AddAddress($email, $name);
}
只有当其中一个复选框被选中时,代码才能正常工作。问题是,如果两者都被选中,它只会添加在第一条if
语句中找到的电子邮件地址,并且不会继续到elseif
语句。我想要发生的是如果所有2个复选框都被选中,它应该将所有4个电子邮件地址添加到现有的$toList
阵列中。
我已经花了8个小时解决问题,但无法找到正确的解决方案。请告知为什么它似乎跳过elseif
声明。
什么一个非常简单的解决方案。如果你已经使用过它,我从来不知道你可以使用另一个。我认为“如果”应该总是由elseif或其他。谢谢!我应该早点问这个问题,而不是花费几个小时。大声笑! –