我一直在尝试管理向用户显示的重复数据。
我想我可以将变量添加到数组并使用函数
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
考虑到您正在对
date
上的查询进行排序,这会导致某些内容重复,您所需要做的就是跟踪最后一个日期。
$lastdate = '';
while ($row = mysqli_fetch_array($result)) {
$dbdate = $row['date'];
if ($lastdate==$dbdate) {
//duplicate
} else {
//first or unique
}
$lastdate = $dbdate;
}
正如OP所指出的,他想要一种方法来检测重复项而不是删除它们。
要检测重复项,您可以使用类似 this 的内容,已在另一个问题中回答。
我更喜欢这个:
function array_has_dupes($array) {
return count($array) !== count(array_unique($array));
}
使用 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 代码中使用它。
[由自动化智能编辑]