2014-01-29 309 views
0

我想排序一個二維數組,我不知道從哪裏開始。我看着array_multisort,但是我沒有真正找到這種排序的好方法。PHP:排序2維陣列

我需要按時間排序,每次都與一場比賽有關。我需要找到誰是最好的5人,所以最好的時機。

我的數組是這樣的:

[0]=> 
    array(2) { 
    [0]=> 
    string(15) "Beaumier Mélina" 
    [1]=> 
    string(7) "1:29.30" 
    } 
    [1]=> 
    array(2) { 
    [0]=> 
    string(14) "Frizzle Émilie" 
    [2]=> 
    string(7) "1:47.96" 
    } 
    [2]=> 
    array(3) { 
    [0]=> 
    string(18) "Morissette Camélia" 
    [2]=> 
    string(7) "1:50.26" 
    [1]=> 
    string(7) "1:50.97" 
    } 
+0

什麼是你的標準的'最好的5 person'? –

+0

Duplicate:http://stackoverflow.com/questions/2699086/sort-multi-dimensional-array-by-value – xtraorange

+0

最好的五次@ user007 – alexandcote

回答

1

您可以使用usort。你給它一個回調函數並比較數組中的每個索引。由於您製作回調函數,因此您可以根據數組中每個索引的時間進行比較。

http://php.net/usort

從上面的文檔:

<?php 
function cmp($a, $b) 
{ 
    return strcmp($a["fruit"], $b["fruit"]); 
} 

$fruits[0]["fruit"] = "lemons"; 
$fruits[1]["fruit"] = "apples"; 
$fruits[2]["fruit"] = "grapes"; 

usort($fruits, "cmp"); 
?> 
+0

我不知道我怎麼能用這種類型的排序。我不是排序的主人。你能否給我一個關於你的開始會如何的簡短例子?所以我重複這個目標,按時間順序尋找最好的5人。最好的五個人將是他們有五個最好的時刻,如此之高的人。 @Jasper – alexandcote

+0

@Alexandcote'usort'的工作方式是:對函數的引用與您的數組一起傳入。然後'usort'函數爲數組中的每個索引運行函數。當你返回-1時,那麼'$ a'索引被移動到一個較低的索引,當你'返回1'時,那麼'$ a'索引被移動到一個更高的索引。當你返回0時,沒有什麼改變。在上面的例子中,'strcmp'用於確定索引應該移動到哪個方式。請注意'$ a'和'$ b'是數組的兩個索引。例如。 if($ a ['time'] <$ b ['time']){return -1} else if($ a ['time']> $ b ['time']){return 1} return 0; ' – Jasper