FOR循环内的IF语句返回错误结果


IF statement inside FOR Loop returns false results

我有几天开始学习PHP,我有下面的代码,它相应地生成了3个复选框和3个下拉列表(可能更多,这不是问题所在)。

其想法是,将使用多个条件创建自定义MySQL查询字符串。下拉列表将包含数据库字段。用户将通过单击这些复选框并在下拉列表中设置值来决定将添加多少自定义条件。

单击选中的每个复选框的提交按钮后,如果设置了相应下拉框中的值,则将读取下拉列表中的值。只有在选中了ALL或仅选中了FIRST复选框时,代码才能工作并返回正确的结果(下拉列表中的值)。例如,如果选中了第二个或第三个复选框,并且设置了下拉列表的值,则if语句会忽略它。很明显,For循环中的if语句(在特定的&&条件下)有问题,但可以修复吗?。此外,如果我在if语句中只有一个条件,那么结果是正确的!。

<?php
    echo <<<_query
    <form action="check_array.php" method="post">
    query1<input type="checkbox" name="query[]" value="query0">
    query2<input type="checkbox" name="query[]" value="query1">
    query3<input type="checkbox" name="query[]" value="query2">
    fields0
    <select name="fields[]">
    <option selected value="null">Select field</option>
    <option value="author">author</option>
    <option value="title">title</option>
    <option value="category">category</option>
    </select>
    fields1
    <select name="fields[]">
    <option selected value="null">Select field</option>
    <option value="author">author</option>
    <option value="title">title</option>
    <option value="category">category</option>
    </select>
    fields2
    <select name="fields[]">
    <option selected value="null">Select field</option>
    <option value="author">author</option>
    <option value="title">title</option>
    <option value="category">category</option></form>
    </select>
    <input type="submit" name="submit" value="check"></form>
    _query;
    for ($i=0;$i<3;++$i)
    {
        if (isset($_POST["query"][$i]) && $_POST["fields"][$i] !="null")
        {
            echo $_POST["query"][$i] ."<br>".$_POST["fields"][$i]."<br>";
        }
    }       
?>

浏览器不会为未选中的复选框提交任何内容,因此每当所选复选框序列中出现空白时,query[]的数组索引就会被丢弃。可以通过为复选框指定数组索引来解决此问题。

更改

query1<input type="checkbox" name="query[]" value="query0">
query2<input type="checkbox" name="query[]" value="query1">
query3<input type="checkbox" name="query[]" value="query2">

query1<input type="checkbox" name="query[0]" value="query0">
query2<input type="checkbox" name="query[1]" value="query1">
query3<input type="checkbox" name="query[2]" value="query2">