简体   繁体   English

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

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

I'm trying to display my array in groups of 3 elements, sorted by the last element of each group.我试图以 3 个元素为一组显示我的数组,按每组的最后一个元素排序。

My array:我的阵列:

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

My expected output is:我的预期输出是:

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

Sorted by the last value of the element groups.按元素组的最后一个值排序。

I'm using foreach to display it:我正在使用 foreach 来显示它:

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

Is this possible ?这可能吗 ? And if yes, how can I change my code to get my expected output?如果是,我如何更改我的代码以获得预期的输出?

This should work for you:这应该适合你:

First we array_chunk() your array into chunks of 3 elements, so your array will have this structure:首先,我们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
        )

)

After this we sort it by the last value (here key 2), with usort() by simply comparing the values.在此之后,我们按最后一个值(这里是键 2)对它进行排序,使用usort()通过简单地比较这些值。 Then at the end you can just loop through your array and display the data.然后最后你可以循环遍历你的数组并显示数据。

<?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>";

?>

output:输出:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM