2012-05-21 140 views
1

我正在尋找一個自定義函數,它將尊重數組的順序並按'name'索引對其進行排序。 'strcasecmp()'函數不能理解字母值,因爲人類會讀它。它認爲'蘋果12'比'蘋果5'價值更低。這個方法我試過,但無法找到一個功能比較字母值:從上面的代碼php按字母數字值排序多維數組

$array = array(
    0 => array(
     'id' => 2, 
     'type' => 'Apples', 
     'name' => 'Apples 5', 
    ), 
    1 => array(
     'id' => 3, 
     'type' => 'Grapes', 
     'name' => 'Apples', 
    ), 
    2 => array(
     'id' => 4, 
     'type' => 'Apples', 
     'name' => 'Apples 4', 
    ), 
    3 => array(
     'id' => 5, 
     'type' => 'Grapes', 
     'name' => 'Apples 01', 
    ), 
    4 => array(
     'id' => 6, 
     'type' => 'Apples', 
     'name' => 'Apples 1', 
    ), 
    5 => array(
     'id' => 7, 
     'type' => 'Grapes', 
     'name' => 'Apples 12', 
    ) 
); 

uasort($array, function($a, $b) { 
    return strcasecmp($a['name'], $b['name']); 
}); 

foreach($array as $single) { 
    echo $single['name'].'<br />'; 
} 

意外的結果:

Apples 
Apples 01 
Apples 1 
Apples 4 
Apples 5 
Apples 12 

任何想法:

Apples 
Apples 01 
Apples 1 
Apples 12 
Apples 4 
Apples 5 

我想達到的效果?

回答