dr5648 2015-06-10 17:40
浏览 67
已采纳

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

I'm trying to display my array in groups of 3 elements, sorted by the last element of each group.

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:

$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?

  • 写回答

1条回答 默认 最新

  • douji6199 2015-06-10 17:45
    关注

    This should work for you:

    First we array_chunk() your array into chunks of 3 elements, so your array will have this structure:

    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. 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){
            if($a[2] == $b[2])
                return 0;
            return $a[2] > $b[2] ? 1 : -1;
        });
    
        foreach($arr as $k => $v)
            echo ($k+1) . "-" . implode(" ", $v) . "<br>";
    
    ?>
    

    output:

    1-foul moneer 20
    2-offside ronaldo 60
    3-goal raul 80
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 基于单片机的靶位控制系统
  • ¥15 AT89C51控制8位八段数码管显示时钟。
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错