我有編碼爲複選框的數組: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或其他。謝謝!我應該早點問這個問題,而不是花費幾個小時。大聲笑! –