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

问题描述 投票:0回答:4

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

我想我可以将变量添加到数组并使用函数

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、事实、日期示例

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
php mysql arrays
4个回答
2
投票

考虑到您正在对

date
上的查询进行排序,这会导致某些内容重复,您所需要做的就是跟踪最后一个日期。

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

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

    $lastdate = $dbdate;


}

1
投票

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

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

我更喜欢这个:

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

1
投票

使用 SQL“计数”和“分组”。

 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 代码中使用它。


1
投票

[由自动化智能编辑]

© www.soinside.com 2019 - 2024. All rights reserved.