【问题标题】:IF statement inside FOR Loop returns false resultsFOR 循环内的 IF 语句返回错误结果
【发布时间】:2016-11-29 03:30:01
【问题描述】:

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

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

单击每个选中复选框的提交按钮后,如果设置了相应下拉框中的值,则会读取下拉列表中的值。只有在选中所有或仅选中第一个复选框时,代码只能返回正确的结果(从下拉列表中的值)。例如,如果第二个或第三个复选框被选中并且设置了下拉列表的值,则 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>";
        }
    }       
?>

【问题讨论】:

    标签: php list if-statement for-loop dropdown


    【解决方案1】:

    浏览器不会为未选中的复选框提交任何内容,因此只要选中的复选框序列出现间隙,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">
    

    【讨论】:

    • Asaph:非常感谢您快速准确的回复。这解决了问题!很高兴知道。
    • @georgepgs 欢迎您。请不要忘记通过单击答案左侧的复选标记将此答案标记为正确。另外,我也将不胜感激。
    • 我的声誉仍然很低,无法统计,但表示已记录
    猜你喜欢
    • 2019-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-08
    • 1970-01-01
    • 1970-01-01
    • 2016-09-14
    • 2020-09-25
    相关资源
    最近更新 更多