在foreach里面循环

时间:2015-02-14 01:21:16

标签: php arrays

我正在尝试创建一个具有多个选择的分层选择菜单。 我选择类别,并将它们存储在逗号分隔的数组中.etc(1,5,10)。一切正常,但每次我在下拉列表中选择while循环echo的重复值时,我选择另一个值。 有没有其他方法可以做到这一点,没有重复的值?

$tree = '<select name="an_det_category[]" class="an_det_category"  multiple>';
$var=explode(",",$row_detail_rec['an_det_category']); 
print_r(array_values($var))
foreach ($var as $var1){

    $result10 = mysql_query("select * from announcment_categories where an_parendid=0 and an_langid=".$_GET['langid']."");          
            while ($row= mysql_fetch_array($result10)){     
                        if ($row['an_location']==$var1){$ka='"selected="selected"">'; 
                         }else{
                             $ka='">';
                             }

                        $tree .= '<option value="'.$row['an_location'].$ka;
                        $tree .= $row['an_name'];
                        $tree .= '</option>';
                        $tree .= getLowerRanks($row['an_location'],1,$var1);                                
        }       
}
$tree .= '</select>';

1 个答案:

答案 0 :(得分:0)

不要进行for循环。只需遍历数据库结果,并使用in_array来测试当前类别是否属于所选类别之一。

while ($row = mysql_fetch_array($result10)) {
    if (in_array($row['an_location'], $var)) {
        $ka = 'selected="selected"';
    } else {
        $ka = '';
    }
    $tree .= "<option value='{$row['an_location']}' $ka>";
    $tree .= $row['an_name'];
    $tree .= '</option>';
    // I'm not sure what this is, or how to reproduce it in this version
    // $tree .= getLowerRanks($row['an_location'], 1, $var1);
}