我正在尝试以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 />";
}
这可能吗?如果是,我如何更改代码以获得预期的输出?
答案 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