2011-10-24 88 views
1

如何編寫函數以字母順序排列多維數組,以便第一種排序依次爲'building name','last_name',然後'first_name '如何根據特定鍵值對字母順序排列多維數組(PHP)

[70] => 
    Array ( 
    [id] => 635 
    [name] => Mick Kruzic 
    [dob] => 11/05/1968 
    [building_name] => 
    [department] => 
    [phone_ext] => 
    [team_name] => 
    [team_leader] => 
    [party_registered] => 
    [total_points] => 0 
    [total_tickets] => 0 
    [awarded_prizes] => 0 
    [processing_prizes] => 0 
    ) 
+1

我看不出有什麼姓氏/名字字段有... –

回答

0

你想查看的函數是array_multisort()。 http://php.net/manual/en/function.array-multisort.php 您可以使用它對多維數組進行排序,或將幾個數組排序在一起。 製作一個只有你想排序的鍵的數組,然後使用該數組作爲第二個參數。

因此,例如,如果你整個數組是$數據:

foreach($data as $smallarray) $buildingnames[] = $smallarray['building_name']; 
foreach($data as $smallarray) $lastnames[] = $smallarray['last_name']; 
foreach($data as $smallarray) $firstnames[] = $smallarray['first_name']; 
array_multisort($builingnames, ASC, $firstnames, ASC, $lastnames, ASC, $data); 
+0

感謝這麼多。它的工作原理 –

+0

......我在一個月前遇到類似的問題 – hackartist

2

usort是你的朋友。

function cmp($a, $b){ 
    // compare building, e.g. using strcmp 
    // compare last_name 
    // compare first_name 
    // return 0 ($a == $b), -1 ($a < $b) or 1 ($a > $b) 
} 

usort($array, 'cmp');