我一直在尝试管理向用户显示的重复数据。
我以为我可以将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
答案 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代码中使用它。