php - 自然排序关联数组?

标签 php arrays sorting

给定一个数组数组,我将如何根据它们的值对内部数组进行自然排序?

示例数组:

array (size=2)
  0 => 
    array (size=1)
      'manager' => string 'Manager 1' (length=9)
  1 => 
    array (size=1)
      'manager' => string 'Manager 3' (length=9)

另一个示例数组:

array (size=2)
  0 => 
    array (size=1)
      'month' => string 'June' (length=4)
  1 => 
    array (size=1)
      'month' => string 'January' (length=7)

我的第一个想法是只natsort() 它们,但这需要一个普通数组。下一个想法是使用 array_multisort($array, SORT_NATURAL);,但由于关联数组,这没有用。

那么,如何使用自然排序对内部数组进行排序?此外,在这种情况下,保留数组键并不重要。

编辑:

数组 1 的预期输出是相同的(因为管理器 1 和管理器 3 已经按顺序排列):

array (size=2)
  0 => 
    array (size=1)
      'manager' => string 'Manager 1' (length=9)
  1 => 
    array (size=1)
      'manager' => string 'Manager 3' (length=9)

数组二的预期输出会将一月放在六月之前(“自然”顺序):

// 0 and 1 keys can switch or stay the same, doesn't matter
array (size=2)
  0 => 
    array (size=1)
      'month' => string 'January' (length=4)
  1 => 
    array (size=1)
      'month' => string 'June' (length=7)

最佳答案

好吧!您可以使用这样的自然排序函数来简化函数:

usort($array, function($a, $b){
    return strnatcmp($a['manager'],$b['manager']); //Case sensitive
    //return strnatcasecmp($a['manager'],$b['manager']); //Case insensitive
});

关于php - 自然排序关联数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28326049/

相关文章:

php - 在Youtube Api上达到licenseContent的值(value)-PHP

c - 无法在快速排序中正确传递数组

php - MySQL在一个查询中应用多个条件

php - 选定时间 + 1440 分钟

php - php 中的正则表达式用于验证模式

c - 将数组 char 转换为数组 Short 时的奇怪行为

php - 是否可以从闭包创建命名函数?

c++ - 将 Vec* 转换为 double*

python - 类型错误 : Can't convert 'int' object to str implicitly/Sorting Array issue

javascript - Console.log 仅显示打印对象的更新版本