在php中只保留数组的数组中的三个最大值



我有一个包含83个数组的数组(我在83中有一个块的数组)。我试图只保留每个数组的三个最大值。每个数组中的所有数字都包含在-1到1之间。每个数组中必须有一个1,我不想把它算在我的三个最大值中。

Array
(
[0] => Array
(
[1] => 0.5278533158407
[2] => 0.4080014506744
[3] => 0.5086879008467
[5] => 0.3950042642736
[6] => 1
[1] => Array
(
[1] => 1
[2] => 0.52873390443395
[3] => 0.52518076782133
[4] => 0.52983621494599
[5] => 0.54392829322042
[6] => 0.53636363636364
Etc...

我正在尝试下面的代码,但它不工作。

for ($i = 0; $i < sizeof($list_chunk); $i++) {
arsort($list_chunk[$i]);
}

for ($i = 0; $i < sizeof($list_chunk); $i++) {
array_slice($list_chunk[$i],1,3,true);
}


print("<pre>");
print_r($list_chunk);
print("</pre>");

有人能帮帮我吗?谢谢你。

这个解决方案使用一个foreach循环来引用子数组。子数组按大小降序排序。提取第一到第三个元素。如果第一个元素为1,则从第2个元素开始提取3个元素。

foreach($array as &$arr){
rsort($arr);
$start = $arr[0] == 1 ? 1 : 0;
$arr = array_slice($arr,$start,3);
}

结果:

array (
0 => 
array (
0 => 0.5278533158407,
1 => 0.5086879008467,
2 => 0.4080014506744,
),
1 => 
array (
0 => 0.54392829322042,
1 => 0.53636363636364,
2 => 0.52983621494599,
),
)

完整示例:https://3v4l.org/pUhic

最新更新