2011-06-09 76 views
0

我有一个带3个复选框的表单,如果他们被选中,我的想法就会运行一些命令,如果没有被选中,就会执行其他操作。如果选中复选框,PHP操作!

for($i=1; $i<=3; $i++) 
{ 
    if ($_POST['option'.$i]) 
    { 
    echo "123"; 
    } 
    if (!$_POST['option'.$i]) 
    { 
    echo "456"; 
    } 
} 

但是,如果他们没有被选中的命令不执行.. if语句是正确的?

+1

还没有尝试过吗?您应该使用if/else而不是2,如果条件为1。 – Fosco 2011-06-09 16:46:06

+0

@Fosco测试是为nood兄弟。伟大的编码人员从开始就做正确的代码! – deadalnix 2011-06-09 16:47:46

+0

如果这些是复选框,他们为什么在循环? – lockdown 2011-06-09 16:48:23

回答

1

当然,这将工作得很好。

如果你想稍微去丑化你的代码,你可以这样来做:

<input type="checkbox" name="options[option_name]" value="1" /> 
<input type="checkbox" name="options[second_option_name]" value="1" /> 

if(isset($_POST['options']) && is_array($_POST['options']) { 
    foreach($_POST['options'] as $option_name => $ignore_this) { 
    switch($option_name) { 
     case 'option_name': 
     // do something 
     break; 
     case 'second_option_name': 
     // do something else 
     break; 
    } 
} 

}

+0

有问题...请参阅我的文章。 – Brad 2011-06-09 16:47:58

+0

不,它会在未选中复选框的情况下通知访问未初始化的数组值。 – Alp 2011-06-09 16:48:40

+0

如果您启用了E_NOTICE,那么您的普通PHP安装不会。 – ceejayoz 2011-06-09 16:49:25

6

不,你应该做的是检查他们这样的:

if (isset($_POST['option'.$i]))

否则,你只是试图评估任何在$ _POST元素的布尔形式。为什么这不好?假设该字段的值是0。即使复选框被选中,您的代码也不会运行。

Documentation for isset()

+0

+1,简短易懂的解释 – Alp 2011-06-09 16:49:15

0

如果您可以使用... ELSE:

if ($_POST['option'.$i]) 
    { 
     echo "123"; 
    } 
    else 
    { 
    echo "456"; 
    } 

以避免检查相同的条件下的两倍。