如何在PHP中按名字排序多维数组?

时间:2016-06-15 15:13:13

标签: php arrays laravel multidimensional-array laravel-5

我只是想通过firstName对多维数组进行排序。我一直在做很多研究,并且找不到与我的问题类似的东西。

(
[0] => Array
    (
        [lastName] => Mark
        [firstName] => White
    )

[1] => Array
    (
        [lastName] => Brown
        [firstName] => Peter

[2] => Array
    (
        [lastName] => Paul
        [firstName] => Vo
    )

[3] => Array
    (
        [lastName] => MCLwous
        [firstName] => Luis
    )

[4] => Array
    (
        [lastName] => Zumilia
        [firstName] => Mario
    )

[5] => Array
    (
        [lastName] => Carl
        [firstName] => Burns
    )
)

3 个答案:

答案 0 :(得分:2)

您可以使用usort函数,使用用户定义的比较函数对数组进行排序:

usort($array, function($v1, $v2) { return strcmp($v1['firstName'], $v2['firstName']); });

或者您可以使用sorted中的Nspl功能:

use function \nspl\a\sorted;
$sorted = sorted($array, 'firstName');

答案 1 :(得分:2)

当您标记问题laravel时,我会给您一个使用该框架的答案,特别是使用Collections时可用的方法:

$sorted = collect($arr)->sortBy('firstName');

注意,这将返回laravel Collection,而不是php数组。

如果您希望将已排序的数据作为普通的php数组返回,则最后会在toArray处添加一个调用:

$sorted = collect($arr)->sortBy('firstName')->toArray();

答案 2 :(得分:0)

我的第一个想法是手动检查每个' firstName'并将firstName和userId保存在单独的字典中。然后使用排序的字典重新排列另一个空数组上的元素(按值或键排序字典是可能的。我已经看到了答案)。这是一个快速的答案。 :)