如何将我的数组分组为 3 个元素的组,按最后一个元素对它们进行排序并显示元素?

Mou*_*afa 3 php arrays sorting foreach

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

我的阵列:

$info = array('goal','raul','80','foul','moneer','20','offside','ronaldo','60');
Run Code Online (Sandbox Code Playgroud)

我的预期输出是:

1-foul moneer 20
2-offside ronaldo 60
3-goal raul 80
Run Code Online (Sandbox Code Playgroud)

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

我正在使用 foreach 来显示它:

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

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

Riz*_*123 6

这应该适合你:

首先,我们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
        )

)
Run Code Online (Sandbox Code Playgroud)

在此之后,我们按最后一个值(这里是键 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>";

?>
Run Code Online (Sandbox Code Playgroud)

输出:

1-foul moneer 20
2-offside ronaldo 60
3-goal raul 80
Run Code Online (Sandbox Code Playgroud)