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

时间:2015-06-10 17:40:53

标签: php arrays sorting foreach

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

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

1 个答案:

答案 0 :(得分:4)

这应该适合你:

首先我们将您的数组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){
        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>";

?>

输出:

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