为什么在这种情况下array_unique无法正常工作

时间:2019-01-29 13:31:58

标签: php

我有一列包含整数值。我通过

加入所有列
"SELECT GROUP_CONCAT(column) AS column"

然后我构建一个数组

while ($row = $result->fetch_assoc()){
        $employees[] = $row['column'];
    }

print_r($ employees)返回Array([0] => 1,2,3,4,68,25,1)

所以我想删除重复的1,为此我使用array_unique

print_r(array_unique($employees)); 

这仍然会带回Array([0] => 1,2,3,4,68,25,1)

我在这里做什么错

3 个答案:

答案 0 :(得分:2)

SQL端的解决方案:

SELECT GROUP_CONCAT(DISTINCT column) AS column

如果要订购列表:

SELECT DISTINCT column ORDER BY Column

,然后按

存储所有行
while(...) $employees[] = $row['column'];

答案 1 :(得分:0)

问题是您试图在字符串上使用array_unique(),但实际上不会做任何事情。

您可以使用explode()函数将此字符串分成数组。

$unique = array_unique(explode(',', $employees[0]);

或者,您可以只在循环内部检查是否已使用in_array()将值放入数组中。

while ($row = $result->fetch_assoc()){
    if(!in_array($row['column'], $employees)) {
        $employees[] = $row['column'];
    }
}

答案 2 :(得分:0)

只需使用array_map函数。并使用intdiv函数

映射所有值
$employees = array_unique(array_map("intdiv", $employees));
print_r($employees);