Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 按重复对整型数组进行排序并删除重复_Php_Sorting_No Duplicates - Fatal编程技术网

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']; } 因此,我想我不得不像第一个例子那样做

我需要用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'];
 }
因此,我想我不得不像第一个例子那样做;按重复次数排序$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