2010-08-10 151 views
1

的陣列我有folloring陣列結構:PHP排序陣列

$list = array(); 
$element1 = array('start' => '10', 'end' => '15'); 
$element2 = array('start' => '1', 'end' => '5'); 
$list[] = $element1; 
$list[] = $element2; 

每個元素在startend僅數字。

我想通過start排序$list值。我怎樣纔能有效地做到這一點?

+0

開始值的意思是一個字符串或數字?它會對答案 – 2010-08-10 14:16:21

回答

4

您可以使用usort與此對比功能:

function cmp($a, $b) { 
    if ($a['start'] == $b['start']) { 
     return $a['end'] - $b['end']; 
    } else { 
     return $a['start'] - $b['start']; 
    } 
} 

與此相比功能元件由他們開始有序值,然後再由他們年底值。

4
function cmp($a, $b) 
{ 
    if ($a['start'] == $b['start']) { 
     return 0; 
    } 
    return ($a['start'] < $b['start']) ? -1 : 1; 
} 

$list = array(); 
$element1 = array('start' => '10', 'end' => '15'); 
$element2 = array('start' => '1', 'end' => '5'); 
$list[] = $element1; 
$list[] = $element2; 

usort($list, "cmp"); 
+0

+1產生一點小差異。只是爲提出問題的人詳細說明,這使用PHP的用戶定義的排序在這裏引用:http://www.php.net/manual/en/function.usort.php – Fosco 2010-08-10 14:19:19