PHP在$ _POST中使用数组时返回null

Geo*_*rge 2 php arrays post

我正在使用带复选框的表单.以下是代码的一部分:

if(isset($_POST['send'])){                          
    $grandezas = array('tempCheckbox', "umiCheckbox", "uvCheckbox", "ventoCheckbox", "direcaoventoCheckbox", "precipitacaoCheckbox");
    $grandezasCount = 0;
    $tamanhoArray = count($grandezas);
    for($i = 1; $i <= $tamanhoArray; $i++){
        if($_POST[$grandezas[i]])
            $grandezasCount++;
        echo $grandezas[i]."."; // This gives me null values.
    }
echo "<br>".count($grandezas)."<br>";
echo $grandezasCount;
printf("%s", $grandezas[1]);
Run Code Online (Sandbox Code Playgroud)

我有一个$grandezas数组,其中包含我在表单中使用的复选框的名称(已经检查过并且它们是正确的).它们在选中时返回值1.所有其余形式的工作完全没有类似的逻辑.

当我使用:

echo "<br>".count($grandezas)."<br>";
printf("%s", $grandezas[1]);
Run Code Online (Sandbox Code Playgroud)

它工作正常,但for循环内的回显不断给我空值.

我用$_POST[$grandezas[i]]错了吗?

Sam*_*ook 5

您需要使用$i而不是i:

if($_POST[$grandezas[$i]])
        $grandezasCount++;
echo $grandezas[$i].".";
Run Code Online (Sandbox Code Playgroud)

此外,表单上未勾选的复选框将不会显示在您的POST结果中.这意味着如果您知道密钥将成为一个复选框,您只需要检查变量是否存在:

if( isset($_POST[$grandezas[$i]]) ){
    //checkbox was ticked
}
Run Code Online (Sandbox Code Playgroud)