【问题标题】:How can I group my array into groups of 3 elements, sort them by the last element and display the elements?如何将我的数组分组为 3 个元素的组,按最后一个元素对它们进行排序并显示元素?
【发布时间】:2015-06-10 17:40:53
【问题描述】:

我正在尝试以 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 />";
}

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

【问题讨论】:

    标签: php arrays sorting foreach


    【解决方案1】:

    这应该适合你:

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

    【讨论】:

      猜你喜欢
      • 2021-11-22
      • 2020-08-02
      • 1970-01-01
      • 1970-01-01
      • 2011-02-07
      • 2015-10-18
      • 2014-12-16
      • 1970-01-01
      相关资源
      最近更新 更多