FOR 循环内的 IF 语句 returns false 结果
IF statement inside FOR Loop returns false results
我有几天开始研究 PHP 并且我有以下代码,它相应地制作了 3 个复选框和 3 个下拉列表(可能更多,这不是问题)。
我们的想法是创建一个自定义 MySQL 查询字符串,其中包含多个条件。下拉列表将包含数据库字段。用户将通过单击这些复选框并在下拉列表中设置一个值来决定将添加多少自定义条件。
为选中的每个复选框单击提交按钮后,如果设置了相应下拉框中的值,则将读取下拉列表中的值。该代码工作起作用,并且仅在选中全部或仅选中的全部或仅次的第一个复选框are/is时,正确的结果(从下拉列表中的值)。例如,如果第二个或第三个复选框是选中的,并且为下拉列表设置了一个值,则 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">
我有几天开始研究 PHP 并且我有以下代码,它相应地制作了 3 个复选框和 3 个下拉列表(可能更多,这不是问题)。
我们的想法是创建一个自定义 MySQL 查询字符串,其中包含多个条件。下拉列表将包含数据库字段。用户将通过单击这些复选框并在下拉列表中设置一个值来决定将添加多少自定义条件。
为选中的每个复选框单击提交按钮后,如果设置了相应下拉框中的值,则将读取下拉列表中的值。该代码工作起作用,并且仅在选中全部或仅选中的全部或仅次的第一个复选框are/is时,正确的结果(从下拉列表中的值)。例如,如果第二个或第三个复选框是选中的,并且为下拉列表设置了一个值,则 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">