【问题标题】:How to sort a multidimensional array by First Name in php?如何在php中按名字对多维数组进行排序?
【发布时间】:2016-10-16 19:12:44
【问题描述】:

我只是想按名字对多维数组进行排序。我一直在做大量研究,但找不到与我的问题相似的任何东西。

(
[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
    )
)

【问题讨论】:

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


【解决方案1】:

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

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

或者你可以使用Nspl中的sorted函数:

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

【讨论】:

  • @lhor Burlachenko 非常感谢!!
  • 如果你可以访问它们,我真的会推荐使用 Laravel Collections,它们非常好,并且比使用原始 php 代码更简洁。
【解决方案2】:

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

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

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

如果您希望将排序后的数据作为普通 php 数组返回,您可以在末尾添加对 toArray 的调用:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-31
      • 2012-06-15
      相关资源
      最近更新 更多