Php if语句在while循环内不工作,while循环在for循环内
我已经花了几个小时研究这个问题,并在网上搜索答案,但没有找到对我有帮助的 因此,我正在为酒店网站制作一个过滤器,酒店搜索的标准之一是酒店所在的地区。我使用GET方法:Php if语句在while循环内不工作,while循环在for循环内,php,if-statement,for-loop,while-loop,Php,If Statement,For Loop,While Loop,我已经花了几个小时研究这个问题,并在网上搜索答案,但没有找到对我有帮助的 因此,我正在为酒店网站制作一个过滤器,酒店搜索的标准之一是酒店所在的地区。我使用GET方法: <?php if (isset($_GET['District1'])){ $district1= ($_GET["District1"]); }else ($district1=0); if (isset($_GET['District2'])){ $district2= ($_GET["Distr
<?php if (isset($_GET['District1'])){
$district1= ($_GET["District1"]);
}else ($district1=0);
if (isset($_GET['District2'])){
$district2= ($_GET["District2"]);
}else ($district2=0);
if (isset($_GET['District3'])){
$district3= ($_GET["District3"]);
}else ($district3=0);
if (isset($_GET['District4'])){
$district4= ($_GET["District4"]);
}else ($district4=0);
?>
其中$district1、$district2、$district3、$district4是该市的4个不同地区
我试图做的是通过使用for loop(变量名称末尾的数字将升序1:$district1..2。3。4)来构建地区变量
然后将这些区域变量放入if子句中,该子句位于while循环中,如下所示:
<?php
$districts_filter_query="SELECT * FROM districts_table ";
$districts_filter_result = mysql_query($districts_filter_query, $connect);
$districts_filter_row = mysql_fetch_array($districts_filter_result);
for($count = 1; $count <= 4 ; $count++){
do {
$district_name = $districts_filter_row['district_name'];
$district_value = $districts_filter_row['district_value'];
echo '
<label for="group13"> <p '; ?> <?php
if ( eval(' return $district'.$count.';') !=0){echo 'class="greenBG"';}
else {echo ' class="checkbox" ';}?> <?php echo ' >
<input type="checkbox" name="District'.$count.'" id="group13" value="'.$district_value.'"
onClick="this.form.submit();" ';?>
<?php if ( eval (' return $district'.$count.';') !=0){echo ' checked ';};?><?php echo '/> '.$district_name.'
</p>
</label> ';
}
while($districts_filter_row = mysql_fetch_array ($districts_filter_result));
}
?>
问题就在这里,我想:eval('return$district'.$count'.;'),通过它,我试图构造district变量名。但它不起作用
如果我使用以下代码,一切都会完美运行:
<label for="group1"> <p <?php
if ($district1!=0){echo 'class="greenBG"';}
else echo 'class="checkbox"';?>>
<input type="checkbox" name="District1" id="group1" value='1013' onClick="this.form.submit();"
<?php if ($district1!=0){echo 'checked ';};?>/> district1
</p>
</label>
<label for="group2"> <p <?php
if ($district2!=0){echo 'class="greenBG"';}
else echo 'class="checkbox"';?>>
<input type="checkbox" name="District2" id="group2" value='1014' onClick="this.form.submit();"
<?php if ($district2!=0){echo 'checked ';};?>/> district2
</p>
</label>
<label for="group3"> <p <?php
if ($district3!=0){echo 'class="greenBG"';}
else echo 'class="checkbox"';?>>
<input type="checkbox" name="District3" id="group3" value='1015' onClick="this.form.submit();"
<?php if ($district3!=0){echo 'checked ';};?>/> district3
</p>
</label>
<label for="group4"> <p <?php
if ($district4!=0){echo 'class="greenBG"';}
else echo 'class="checkbox"';?>>
<input type="checkbox" name="District4" id="group4" value='1016' onClick="this.form.submit();"
<?php if ($district4!=0){echo 'checked ';};?>/> district4
</p>
</label>
/>地区1
/>第2区
/>第3区
/>第4区
但这不适合我,因为有30多个地区,对代码进行任何微小的更改都需要花费大量的时间和精力
如果你能帮我解决这个问题,节省我的时间,我将不胜感激。谢谢,希望我的问题足够清楚。作为一种方法,这有点复杂,但摆脱
eval
的快速解决方案是使用变量:
<?php
$district_name = "district$count";
if ($$district_name != 0) { ... }
?>
。。。虽然更好的解决方案是只使用数组并在其中循环。使用,而不是使用一些丑陋的eval()
。(例如${“地区$count”}
)
$count=0;
做{
$count++;
$district_name=$districts_filter_row['district_name'];
$district_value=$districts_filter_行['district_value'];
?>
>
/>
$count = 0;
do {
$count++;
$district_name = $districts_filter_row['district_name'];
$district_value = $districts_filter_row['district_value'];
?>
<label for="group<?php echo $count; ?>">
<p <?php
if (${"district$count"} != 0) echo 'class="greenBG"';
else echo 'class="checkbox"'; ?>>
<input type="checkbox" name="District<?php echo $count; ?>" id="group<?php echo $count; ?>" value='<?php echo $district_value; ?>' onClick="this.form.submit();"
<?php if (${"district$count"} != 0) echo 'checked '; ?>/> <?php echo $district_name; ?>
</p>
</label>
<?php
}
while($districts_filter_row = mysql_fetch_array ($districts_filter_result));