如何从下拉列表中删除重复值

时间:2019-05-03 02:43:19

标签: php

我使用以下代码对下拉列表中的值进行编码,我想从列表中删除重复的值,但我不知道该怎么做??

<select id="dept" name="dept" class="dept" width="100" style="width: 100px">
<?php
while ($line = odbc_fetch_array($result)){
$fullNames=substr($line['fullName'],strpos($line['fullName'],'-')+1);
if ($fullNames==$_POST['dept']){
    $selected="selected=\"selected\"";
}
else {
        $selected="";
}
echo "<option value=\"".$fullNames."\" $selected>".$fullNames."</option>";
}
?>
</select>

$ _ POST ['dept']中的现有结果

AC 人力资源 交流电 管理员 管理信息系统 信息管理系统

期望$ _POST ['dept']中的结果

AC 管理员 人力资源 信息管理系统

4 个答案:

答案 0 :(得分:0)

由于它位于数组中,因此可以使用

$array = array_unique($array);

这将自动检测所有重复项并将其删除,仅保留数组中的第一个实例,请参见https://www.php.net/manual/en/function.array-unique.php

编辑:我不确定100%是否了解您的数据输入方式,但是如果我正确理解了该数据,则可以尝试以下操作:

<select id="dept" name="dept" class="dept" width="100" style="width: 100px">
<?php
$fullNames = array();
while ($line = odbc_fetch_array($result)){
$fullNames=substr($line['fullName'],strpos($line['fullName'],'-')+1);
}
    $fullNames = array_unique($fullNames);
    if ($fullNames==$_POST['dept']){
        $selected="selected=\"selected\"";
    } else {
        $selected="";
}
echo "<option value=\"".$fullNames."\" $selected>".$fullNames."</option>";
}
?>
</select>

那表示您可能不想直接使用$ _POST ['dept'],而是想先在$ _POST ['dept']上进行一些验证,然后在确认它是有效值之后再使用在这样的变量中:

$dept = $_POST['dept'];

然后,您需要更新其他代码以使用$ dept而不是$ _POST ['dept']。但这可以防止用户提交无效或更糟但有意格式不正确的部门带来的任何意外后果。最好不要信任或直接使用用户输入,而要对其进行测试和验证。

答案 1 :(得分:0)

在您的SQL语句上使用DISTINCT以获得唯一的结果。

示例:

   SELECT DISTINCT col FROM Table

您可以在此处阅读有关SQL DISTINCT的详细信息:https://www.w3resource.com/sql/select-statement/queries-with-distinct-multiple-columns.php

答案 2 :(得分:0)

也许您可以使用当前循环将名称推送到数组中,然后过滤掉重复的值。然后使用另一个循环回显标签。

<select id="dept" name="dept" class="dept" width="100" style="width: 100px">
<?php
$array = []; 
while ($line = odbc_fetch_array($result)){
    $fullNames=substr($line['fullName'],strpos($line['fullName'],'-')+1);
    array_push($array,$fullNames);//push all names into a array
}
$array = array_unique($array); //filter the duplicate names.

//another loop to echo the <option>
foreach ($array as $fullNames) {
    if ($fullNames==$_POST['dept']){
       $selected="selected=\"selected\"";
    }
    else {
       $selected="";
    }
    echo "<option value=\"".$fullNames."\" $selected>".$fullNames."</option>";
    }
?>
</select>

答案 3 :(得分:0)

我已经修改了您的脚本

<select id="dept" name="dept" class="dept" width="100" style="width: 100px">
<?php
$dropdown = array();
while ($line = odbc_fetch_array($result)){
    $fullNames=substr($line['fullName'],strpos($line['fullName'],'-')+1);

    $selected="";
    if($fullNames==$_POST['dept'])
        $selected="selected=\"selected\"";
    }

    $dropdown[$fullNames] = "<option value=\"".$fullNames."\" $selected>".$fullNames."</option>";    
}
echo implode('',$dropdown);
?>
</select>

由于您没有发布查询并更新提供的代码,因此您还可以在查询中获取唯一记录。