繁体   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