2010-08-10 130 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