Проверка значения существует - PullRequest
0 голосов
/ 03 декабря 2009

У меня есть следующие флажки в моей форме, я хотел бы знать, как проверить, что хотя бы один из них отмечен без изменения названия.

<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 ]

5 голосов
/ 03 декабря 2009

Использовать isset () или array_key_exists () . Эти две функции имеют очень небольшое различие в том, что если значение равно нулю, даже если ключ существует, 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);

Это зависит от того, насколько вы довольны функциональным программированием и предпочитаете ли вы его.

0 голосов
/ 03 декабря 2009
$checkcount = 0;
if($_POST['branding']){$checkcount++}
if($_POST['print']){$checkcount++}
if($_POST['website']){$checkcount++}
if($_POST['other']){$checkcount++}

if($checkcount>0){
    //do stuff
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...