在PHP中按字母的字母顺序对多维数组进行排序

时间:2019-07-03 11:37:20

标签: php arrays sorting multidimensional-array alphabetical-sort

我有一个带有字母键的数组:

Array
(
    [0] => Array
        (
            [UserID] => 1
            [EmailAddress] => user5@gmail.com
            [TransID] => fjhf8f7848
        )
    [1] => Array
        (
            [UserID] => 1
            [EmailAddress] => johndoe@gmail.com
            [TransID] => dfsdhsdu78
        )

)

我想按字母的字母顺序对该数组排序。 预期输出为:

Array
(
    [0] => Array
        (
            [EmailAddress] => user5@gmail.com
            [TransID] => fjhf8f7848
            [UserID] => 1
        )
    [1] => Array
        (
            [EmailAddress] => johndoe@gmail.com
            [TransID] => dfsdhsdu78
            [UserID] => 2
        )

)

我尝试了各种数组排序功能,但它们返回空白。

如何用字母键对此类数组进行字母排序?

1 个答案:

答案 0 :(得分:1)

您可以使用array_map和ksort,

$result = array_map(function(&$item){
    ksort($item); // sort by key
    return $item;
}, $arr);

Demo

使用foreach循环,

foreach($arr as &$item){
    ksort($item);
}

编辑
在这种情况下,您可以使用

foreach($arr as &$item){
    uksort($item, function ($a, $b) {
      $a = strtolower($a); // making cases linient and then compare
      $b = strtolower($b);
      return strcmp($a, $b); // then compare
    });
}

Demo

输出

Array
(
    [0] => Array
        (
            [EmailAddress] => user5@gmail.com
            [TransID] => fjhf8f7848
            [UserID] => 1
        )

    [1] => Array
        (
            [EmailAddress] => johndoe@gmail.com
            [TransID] => dfsdhsdu78
            [UserID] => 1
        )

)