如何根据某个键值按字母顺序对多维数组进行排序(PHP)

时间:2011-10-24 19:24:34

标签: php

如何编写一个函数来对多维数组进行字母顺序排列,使得第一个排序是“建立名称”,然后是“last_name”,然后是“first_name”

 [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 
    )

2 个答案:

答案 0 :(得分: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');

答案 1 :(得分:0)

您要查看的函数是array_multisort()。 http://php.net/manual/en/function.array-multisort.php 您可以使用它对多维数组进行排序,或将多个数组排序在一起。 创建一个只需要排序的键的数组,然后将该数组用作第二个参数。

所以例如,如果整个数组是$ data:

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);