gpt4 book ai didi

php - 根据元素出现的频率对整数数组进行排序。如果两个元素的频率相同,则它们将按升序打印

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:06:22 26 4
gpt4 key购买 nike

例如,输入数组是[9,1,9,1,3,9,1,2,9]输出数组将是[9,9,9,9,1, 1,1,2,3]。

这是我在下面尝试过但没有给我预期结果的方法:

$array = [9,1,9,1,3,9,1,2,9];
$values = array_count_values($array);
arsort($values);
$popular = array_keys($values);

print_r(array_values($popular));

foreach ($values as $key => $val) {
echo $key.", ";
}

输出:

Array
(
[0] => 9
[1] => 1
[2] => 3
[3] => 2
)
9, 1, 3, 2,

最佳答案

如果我们循环 array_count_values 那么我们可以确保它们以正确的顺序出现。
当有两个相同的计数时,我发现所有相同的 array_intersect 然后 foreach 它们并以正确的顺序添加。

$array = [9,1,9,1,3,9,1,2,9];
$values = array_count_values($array);
arsort($values);
//var_dump($values);

$result =[];
$same = [];
foreach($values as $key => $val){
if(!in_array($key, array_keys($same))){
if(next($values) != $val){
$result = array_merge($result, array_fill(0, $val, $key));
}else{
$same = array_intersect($values, [$val]);
ksort($same);
foreach($same as $skey => $val){
$result = array_merge($result, array_fill(0, $val, $skey));
}
//var_dump($same);
}
}
}

var_dump($result);

https://3v4l.org/sk44Q

关于php - 根据元素出现的频率对整数数组进行排序。如果两个元素的频率相同,则它们将按升序打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56871511/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com