Php 对多维关联数组排序?

Php 对多维关联数组排序?,php,arrays,sorting,multidimensional-array,Php,Arrays,Sorting,Multidimensional Array,好的,我有一个用于传输名称的数组,它如下所示: array(2) { [0]=> array(3) { ["firstName"]=> string(3) "Joe" ["lastName"]=> string(5) "Black" ["uid"]=> int(3225) } [1]=> array(3) { ["firstName"]=> string(4) "John"

好的,我有一个用于传输名称的数组,它如下所示:

array(2) {
  [0]=>
  array(3) {
    ["firstName"]=>
    string(3) "Joe"
    ["lastName"]=>
    string(5) "Black"
    ["uid"]=>
    int(3225)
  }
  [1]=>
  array(3) {
    ["firstName"]=>
    string(4) "John"
    ["lastName"]=>
    string(3) "Doe"
    ["uid"]=>
    int(3516)
  }
}
现在,如何按
lastName
对该数组进行排序?

在中发布时,您可以使用以下功能:

<?php

function sksort(&$array, $subkey="id", $sort_ascending=false) {

    if (count($array))
        $temp_array[key($array)] = array_shift($array);

    foreach($array as $key => $val){
        $offset = 0;
        $found = false;
        foreach($temp_array as $tmp_key => $tmp_val)
        {
            if(!$found and strtolower($val[$subkey]) > strtolower($tmp_val[$subkey]))
            {
                $temp_array = array_merge(    (array)array_slice($temp_array,0,$offset),
                                            array($key => $val),
                                            array_slice($temp_array,$offset)
                                          );
                $found = true;
            }
            $offset++;
        }
        if(!$found) $temp_array = array_merge($temp_array, array($key => $val));
    }

    if ($sort_ascending) $array = array_reverse($temp_array);

    else $array = $temp_array;
}

?>

StackOverflow有很多类似的问题,但让我举个简单的例子。为此,您可以使用该函数

PHP5.3示例(不是最好的,但可能更容易理解):


简短且可重复使用的方法:

usort($array, 'nameSort');

function nameSort($a, $b)
{
    return strcmp($a['lastName'], $b['lastName']);
}

虽然相关问题可能与您的情况不符合1:1,但大多数问题都包含完成任务所需的函数和解释。答案可能几乎完全相同(关键需求已更改)。另请注意,如果您在类中执行此操作,您将向usort传递数组而不是字符串,像这样:
usort($array,array($this,'nameSort')是所有的“如果…”。。还有其他必要吗?我认为这可以被重构为
返回$I['lastName']>$j['lastName']
@galdikas文档说函数应该返回1、0或-1。我已经很久没有接触过PHP了。
usort($array, 'nameSort');

function nameSort($a, $b)
{
    return strcmp($a['lastName'], $b['lastName']);
}