2011-10-24 50 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');