Php 按重复对整型数组进行排序并删除重复
我需要用php做这个 假设我有Php 按重复对整型数组进行排序并删除重复,php,sorting,no-duplicates,Php,Sorting,No Duplicates,我需要用php做这个 假设我有[1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,3,4,5,5,5,5,5,5,5,5,5,5,9,9,9,9,9] 我想要[1,5,9,2,3,4] 但我的情况有点不同,这是mysql查询的结果 我只有一个关联的心房肌“id_deseada”,所以我现在有了 while($row = mysql_fetch_array($result){ $t = $row['id_deseada']; } 因此,我想我不得不像第一个例子那样做
[1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,3,4,5,5,5,5,5,5,5,5,5,5,9,9,9,9,9]
我想要[1,5,9,2,3,4]
但我的情况有点不同,这是mysql查询的结果
我只有一个关联的心房肌“id_deseada”,所以我现在有了
while($row = mysql_fetch_array($result){
$t = $row['id_deseada'];
}
因此,我想我不得不像第一个例子那样做;按重复次数排序$result,并可能在新数组中使用新字段“count”进行排序
这一切都是由于此查询而开始的:
选择articles.id作为id_deseada,tags.*从articles,tags中选择tags.id_article=articles.id和tags.name IN('name one'、'name two'、'form search inputs'、'…)
问题是每个标记返回一个结果,我希望每个文章都返回一个结果。首先,生成如下值数组:
$vals = array();
while($row = mysql_fetch_array($result){
$vals[] = $row['id_deseada'];
}
然后,以及:
实际上,您可以使用SQL查询来实现这一点。例如,我们有以下表格:
create table lol (id_deseada int);
insert into lol values (1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(2),(3),(4),(5),(5),(5),(5),(5),(5),(5),(5),(5),(5),(5),(9),(9),(9),(9),(9);
您可以使用分组和排序,通过重复从数据库排序中选择id\u deseada
SELECT id_deseada FROM lol
GROUP BY id_deseada
ORDER BY COUNT(*) DESC
结果:1、5、9、2、3、4。为什么不在SQL查询本身中解决(至少部分)这个问题?因为我对mysql非常在行,我会发布查询,然后我会尝试让您知道,gracias!我会尽力让你知道。。但是有一个问题,那么我可以做$result[id_deseada],还是我只需要一个'for'和$result[$i]?后者,$result在你的例子中是[1,5,9,2,3,4]。好的,不用重复就可以了!干杯但顺序正好相反(1是最后一个)@Toni Michel Caubet。你说得对,更新为颠倒顺序:使用aRsort而不是asort。
SELECT id_deseada FROM lol
GROUP BY id_deseada
ORDER BY COUNT(*) DESC