2015-06-10 26 views
1

我試圖按3個元素的組顯示我的數組,按每個組的最後一個元素排序。如何將我的數組分組爲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 />"; 
} 

這可能嗎?如果是的話,我如何更改我的代碼以獲得預期的輸出結果?

回答

2

這應該爲你工作:

首先,我們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 
+0

感謝ü這麼多ü拯救了我的 –

+0

@moneer不客氣的一天。 – Rizier123

相關問題