2011-06-09 112 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"; 
    } 

以避免檢查相同的條件下的兩倍。