在循环中摆脱PHP中的重复项

时间:2013-10-05 01:22:41

标签: php html select duplicate-removal

所以这是我的PHP代码:

$sql1 = "SELECT year FROM reports ORDER BY year DESC";
$res1 = mysql_query($sql1);
while($row = mysql_fetch_array($res1)) {
    $selectYear = "
        <select id='select_year'>
            <option value='".$row['year']."'>".$row['year']."</option>
        </select>
    ";
}

我想要它做的只是输出一年,而不是现在每年输出的内容,一年中每个月有一个条目,所以同一年有12个条目所以我的html是这样:

<select id='select_year'>
    <option value='2013'>2013</option>
    <option value='2013'>2013</option>
    <option value='2013'>2013</option>
    <option value='2013'>2013</option>
    <option value='2012'>2012</option>
</select>

但这是我真正想要的:

<select id='select_year'>
    <option value='2013'>2013</option>
    <option value='2012'>2012</option>
</select>

这是按年份对所有结果进行排序,以便用户只需使用选择来选择他们想要查看的年份。

2 个答案:

答案 0 :(得分:8)

有很多方法可以做到这一点,但最简单的可能是:

$sql1 = "SELECT DISTINCT year FROM reports ORDER BY year DESC";

使用DISTINCT,数据库只返回每个值中的一个。然后,您不必浪费任何资源处理PHP端的数据。

答案 1 :(得分:2)

@Thomas Kelley已经给出了上面的完美答案。

但是,如果你坚持使用PHP解决方案。你可以这样做。

$res1 = mysql_query($sql1);
$placeHolder = ",";
while($row = mysql_fetch_array($res1)) {
    if ( strpos($placeHolder , $row['year']) )
        continue;
    $placeHolder .= $row['year'] .',';
    $selectYear = "
        <select id='select_year'>
            <option value='".$row['year']."'>".$row['year']."</option>
        </select>
    ";
}