将HTML复选框数组(带有空值)传递给PHP

时间:2015-08-03 18:51:09

标签: php html arrays forms checkbox

我遇到了将HTML复选框数组传递给PHP的问题,其代码类似于:     

$cbArray = checkbox($_POST['cbArray']);
$cbArray = array_chunk($cbArray, 4);

$id = $_POST['id'];
$idcount = count($id);
$id = array_chunk($id, 4);

$cbOuterArrays = 0;
if( $idcount > 16 ){
        $cbOuterArrays = 4;
    }elseif( $idcount > 12 ){
        $cbOuterArrays = 3;
    }elseif( ($idcount > 8 ){
        $cbOuterArrays = 2;
    }elseif( $idcount > 4 ){ 
        $cbOuterArrays = 1;
    }

for( $i = 0; $i <= $cbOuterArrays; $i++ ){
    $c = 0;
    if(isset($id[$i][$c])){
        if($cb[$i][$tc] == 'x'){
            echo "1st checked in chunk " . $c;
        }
    }
    $c++
    if(isset($id[$i][$c])){
        if($cb[$i][$tc] == 'x'){
            echo "2st checked in chunk ". $c;
        }
    }
    $c++
    if(isset($id[$i][$c])){
        if($cb[$i][$tc] == 'x'){
            echo "3st checked in chunk . $c;
        }
    }
    $c++
    if(isset($id[$i][$c])){
        if($cb[$i][$tc] == 'x'){
            echo "4st checked in chunk . $c;
        }
    }
}
?>

我的HTML与此类似:

<html>
    <input type="text" name="id[]">
    <input type="checkbox" name="cb[]"> //I have tried value="1" as well but it didn't help
    //Then I have a button that runs js to add more checkboxes
    <input type="submit" value="Submit">
</html>

无论我检查哪个复选框,如果我只检查一个回复&#34;第一个检查块0&#34;。它几乎就像只吸引了人口稠密的价值一样。对不起,如果代码看起来不好。我试图删除所有不相关的东西,同时留下任何可能导致问题的原因。我以为我的checkbox函数会检查每个值,如果它是空的,则使它成为数组中的空白空间。如何识别空复选框?

编辑:

正如MaggsWeb所说,我无法发送空复选框。我将复选框功能更改为:

<?php
function cb($x){
    $a = [];                     #Create new array
    $cv = 0;                     #Current new array value
    foreach($_POST[$x] as &$v){  #Loop through the first array
        while($cv < intval($v)){ #If the new array is not at the old arrays value loop
            $a[$cv] = ' ';       #Fill the new array value with blank space
            $cv++;               #Move to next value in new array
        }                        #Repeat if not at the value yet
        $a[$cv] = 'x';           #Set the current value of new array to 'x'
        $cv++;                   #Move to next value in new array
    }                            #Move to next value in old array & Repeat
    return $a;                   #Return the new array
}
#and call it via cb('id');
?>

2 个答案:

答案 0 :(得分:0)

复选框值只有在选中后才会被发送。

复选框名称不必是“数组”格式,除非它们有很多。在这种情况下,每个人都需要不同的值。

不确定您的所有代码是做什么的。您似乎没有在if ( is_array ( $_POST['cb'] ) ) { ...

的任何地方进行检查

答案 1 :(得分:-1)

您可以使用隐藏元素获取未经检查的值。尝试这样的事情:

<input type="hidden" name="checkbox" value="unchecked" />
<input type="checkbox" name="checkbox" id="checkbox1" value="checked" />

取消选中复选框后,$_POST['checkbox']值来自隐藏元素。否则来自复选框。