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

时间:2016-03-28 03:53:26

标签: php arrays

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

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排序,我该怎么做?

3 个答案:

答案 0 :(得分:2)

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

这是我去分页的页面。如果你想保留数组键,你可以这样做:

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

将比较切换为更改或订购。如果您经常使用这种类型,您可能希望将其提取到自己的函数而不是使用闭包。就个人而言,排序闭包非常简短,我喜欢将其内联到我可以正确看到的内容,而无需跳转到另一段代码。

答案 1 :(得分:2)

uasort()功能是您正在寻找的功能。

uasort($data, function($a, $b) { return strcasecmp($a['name'], $b['name']); });

您应该查看 usort() uksort() doc,了解用户定义的比较函数的工作原理。

答案 2 :(得分:1)

试试这个

$nameA = array();
foreach ($inventory as $key => $row)
{
    $nameA[$key] = $row['name'];
}
array_multisort($nameA, SORT_ASC, $inventory);

这里

  

$库存

是你的主阵列