如何将数组分组为3个元素的组,按最后一个元素排序并显示元素


How can I group my array into groups of 3 elements, sort them by the last element and display the elements?

我试图以3个元素为一组显示我的数组,按每组的最后一个元素排序。

我的阵列:

$info = array('goal','raul','80','foul','moneer','20','offside','ronaldo','60');

我的预期输出是:

1-foul moneer 20
2-offside ronaldo 60
3-goal raul 80

按元素组的最后一个值排序。

我正在使用foreach来显示它:

$i = 0;
foreach($info as $key => $val) {
    $i++;
    echo $info[$key] . '<br>';
    if ($i % 3 == 0){
        echo "<br />";
}

这可能吗?如果是,我如何更改代码以获得预期的输出?

这应该适用于您:

首先,我们将您的数组array_chunk()为3个元素的块,因此您的数组将具有以下结构:

Array
(
    [0] => Array
        (
            [0] => goal
            [1] => raul
            [2] => 80
        )
    [1] => Array
        (
            [0] => foul
            [1] => moneer
            [2] => 20
        )
    [2] => Array
        (
            [0] => offside
            [1] => ronaldo
            [2] => 60
        )
)

之后,我们根据最后一个值(此处为键2(对其进行排序,并通过简单地比较值来对usort()进行排序。然后在最后,您可以循环遍历您的数组并显示数据。

<?php
    $info = array('goal','raul','80','foul','moneer','20','offside','ronaldo','60');
    $arr = array_chunk($info, 3);
    usort($arr, function($a, $b){
        return $a[2] <=> $b[2];
    });
    
    foreach($arr as $k => $v)
        echo ($k+1) . "-" . implode(" ", $v) . "<br>";
?>

输出:

1-foul moneer 20
2-offside ronaldo 60
3-goal raul 80