如何使用PHP对其关联数组进行排序?

How to sort associative array by its value using PHP?

本问题已经有最佳答案,请猛点这里访问。

我有一个这样的关联数组。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Array
(
    [0] => Array
        (
            [id] => 1
            [name] => Admin
            [email] => admin@admin.com
            [group] => Admin
            [href] => http://localhost/teradasys/index.php/users/user/user_info?&user_id=1
        )

    [1] => Array
        (
            [id] => 2
            [name] => rochellecanale
            [email] => rochellecanale11@gmail.com
            [group] =>
            [href] => http://localhost/teradasys/index.php/users/user/user_info?&user_id=2
        )

    [2] => Array
        (
            [id] => 3
            [name] => symfony
            [email] => chelle@flax.ph
            [group] =>
            [href] => http://localhost/teradasys/index.php/users/user/user_info?&user_id=3
        )

    [3] => Array
        (
            [id] => 4
            [name] => jolopeterson
            [email] => jolo@flax.ph
            [group] =>
            [href] => http://localhost/teradasys/index.php/users/user/user_info?&user_id=4
        )

    [4] => Array
        (
            [id] => 5
            [name] => symfony123
            [email] => symfony123@gmail.com
            [group] =>
            [href] => http://localhost/teradasys/index.php/users/user/user_info?&user_id=5
        )

我想按name排序,我该怎么做?


函数是您要查找的。

2

您应该查看usort()和uksort()文档,了解用户定义的比较函数如何工作的示例。


http://php.net/manual/en/array.sorting.php

这是我的转到页面进行排序。如果要保留数组键,可以执行以下操作:

1
2
3
4
uasort($myArray, function ($a, $b) {
    if ($a['name'] == $b['name'] return 0;
    return ($a['name'] < $b['name']) ? -1 : 1;
});

将比较转换为更改或排序。如果经常使用这种类型,您可能希望将其提取到自己的函数中,而不是使用闭包。就个人而言,排序结束是相当短的,我喜欢把它放在内联中,这样我就可以准确地看到正在发生的事情,而不需要跳到另一个代码位。


试试这个

1
2
3
4
5
6
$nameA = array();
foreach ($inventory as $key => $row)
{
    $nameA[$key] = $row['name'];
}
array_multisort($nameA, SORT_ASC, $inventory);

在这里

0

是你的主阵吗