避免在数据库中显示PHP中的重复结果

时间:2015-01-20 11:11:56

标签: php mysql arrays

我一直在尝试管理向用户显示的重复数据。

我以为我可以将varibales添加到数组并使用函数array_unique

我希望能够管理包含重复日期的行,并将它们分成不同的部分,例如

if(duplicate.exists == true)
{
 //do something to the duplicate row
}
else
{
//do something to the row which isnt a duplicate
}

我无法弄清楚array_unique无效的原因。

帮助将不胜感激,谢谢。

$result = mysqli_query($con, "SELECT *
        FROM quotes order by DATE asc ");

        $index1 = array();
        $fact1 = array(); 
        $newDate1 = array();

        while ($row = mysqli_fetch_array($result)) {

            $index = $row['id'];
            $dbdate = $row['date'];
            $fact = $row['quote'];

            $newDate = date("d-m-Y", strtotime($dbdate));

            $index1[] = $fact;
            $fact1[] = $fact;
            $newDate1[] = $newDate;

        }

然后有一个循环遍历每个数组的函数,并找出某个日期是否已经存在。

for($i=0; $i<count($index1); $i++) {

 echo(array_unique($newDate1));

}

 else
{

}

这是数据库中的数据示例。 它是id,fact,date example 1, fact, 2015-01-22

1 Steve Jobs unveiled the first Apple #Mac computer and changed technology forever (1984) - 2015-01-24
2 In 2011, the Urban Technology Innovation Center was launched in New York City - 2015-01-25
3 #Bebo was launched a whole decade ago today (2005), who feels old? - 2015-01-26
4 Sun Microsystems was acquired by Oracle Corporation for $7.4 bn (2010) - 2015-01-27

4 个答案:

答案 0 :(得分:2)

考虑到您正在date对查询进行排序,这会使某些内容重复,您需要做的就是跟踪上次日期。

$lastdate = '';
while ($row = mysqli_fetch_array($result)) {
    $dbdate = $row['date'];

    if ($lastdate==$dbdate) {
      //duplicate
    } else {
      //first or unique
    }

    $lastdate = $dbdate;


}

答案 1 :(得分:1)

在SQL

中执行此操作会更快

找到重复项

SELECT * FROM quotes GROUP BY `date` HAVING COUNT(`date`) > 1 order by DATE asc

找到非重复的

SELECT * FROM quotes GROUP BY `date` HAVING COUNT(`date`) = 1 order by DATE asc

答案 2 :(得分:1)

正如OP所指出的,他想要一种检测重复的方法,而不是删除它们。

要检测重复项,您可以使用this之类的内容,在另一个问题中回答。

我更喜欢这个:

function array_has_dupes($array) {
   return count($array) !== count(array_unique($array));
}

答案 3 :(得分:1)

使用SQL“count”和“group”。

 create table z (x varchar(100),y varchar(100));
 insert into z values ('a','b');
 insert into z values ('a','b');
 insert into z values ('a','c');
 select x,y,count(*) as count from z group by x,y;

你得到了价值观:

+------+------+-------+ | x | y | count | +------+------+-------+ | a | b | 2 | | a | c | 1 | +------+------+-------+

并在php代码中使用它。