簡體   English   中英

PHP 條件語句跳過 elseif

[英]PHP Conditional Statement skips 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 &amp; CASCADE" />
</form>

以下代碼檢查哪些復選框被選中。 然后通過檢查內爆復選框值,將相應的電子郵件地址添加到$toList數組中。

$checkbox = $_POST['checkbox'];
$checkboximploded = implode($checkbox);
$toList = array(
    'firstemail@email.com' => 'First Email',
    'secondemail@email.com' => 'Second Email',
);

if(!empty($_POST['checkbox'])) {
    foreach ($checkbox as $value) {

            if (preg_match('/EMEA/',$checkboximploded)) {
                $toList["thirdemail@email.com"] = "Third Email";
                $toList["fourthemail@email.com"] = "Fourth Email";
            }
           elseif (preg_match('/NAM/',$checkboximploded)) {
                $toList["fifthemail@email.com"] = "Fifth Email";
                $toList["sixthemail@email.com"] = "Sixth Email";
        }   
}   
            foreach($toList as $email => $name) {
                $mail->AddAddress($email, $name);
            }

僅當檢查其中一個復選框時,代碼才能完美地工作。 問題是,如果兩者都被選中,它只會添加在第一個if語句中找到的電子郵件地址,而不會繼續添加到elseif語句中。 我想要發生的是如果所有 2 個復選框都被選中,它應該將所有 4 個電子郵件地址添加到現有的$toList數組中。

我已經花了 8 個小時解決這個問題,但找不到正確的解決方案。 請告知為什么它似乎正在跳過elseif語句。

將 elseif 更改為簡單的 IF 從此...

    elseif (preg_match('/NAM/',$checkboximploded)) {

對此...

    if (preg_match('/NAM/',$checkboximploded)) {

因為你的 else if 正是這樣:一個 else if(意思是:如果第一個條件不滿足,只檢查第二個條件)。

如果你想讓它成為一個正常的 if(去掉 else),你會告訴程序檢查彼此獨立的兩個條件,根據你的描述,這是你想要的。

任何一個:

  • 將您的elseif更改為if (並擺脫循環),或
  • 更改您的preg_match以檢查$value

這是為什么。 如果兩個復選框都被勾選,則$_POST['checkbox']array ('EMEA', 'NAM') ,因此$checkboximploded"EMEANAM" ,它匹配ifelseif的正則表達式。 但是由於if是第一位的, if獲勝,無論您是否在$checkbox.迭代$checkbox.

此外, preg_match可能strpos矯枉過正:在這種情況下strpos就足夠了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM