检查值是否存在

时间:2009-12-03 16:37:30

标签: php

我的表单中有以下复选框,我想知道如何检查至少其中一个复选框,而不更改它们的名称。

<label for="branding">Branding
<input type="checkbox" name="branding" id="branding" class="checkbox" /></label>
<label for="print">Print
<input type="checkbox" name="print" id="print" class="checkbox" /></label>
<label for="website">Website
<input type="checkbox" name="website" id="website" class="checkbox" /></label>
<label for="other">Other
<input type="checkbox" name="other" id="other" /></label>

2 个答案:

答案 0 :(得分:5)

使用isset()array_key_exists()。这两个函数确实有很小的区别,如果值为null,即使键存在,isset也返回false。但是,在这种情况下无关紧要

if ( isset($_POST['branding']) || isset($_POST['print']) ){
    //...
}

或者可能更好

$ops = array('branding', 'print');
$hasSomethingSet = false;
foreach ( $ops as $val ){
     if ( isset($_POST[$val]) ){
         $hasSomethingSet = true;
         break;
     }
}

if ( $hasSomethingSet ){
    //...
}



如果你有PHP 5.3,那么(未经测试)稍慢但更优雅的解决方案是:

$ops = array('branding', 'print');
$hasSomethingSet = array_reduce($ops, 
                                function($x, $y){ return $x || isset($_POST[$y]; },
                                false);

这取决于你喜欢的函数式编程是多么满意。

答案 1 :(得分:-1)

$checkcount = 0;
if($_POST['branding']){$checkcount++}
if($_POST['print']){$checkcount++}
if($_POST['website']){$checkcount++}
if($_POST['other']){$checkcount++}

if($checkcount>0){
    //do stuff
}