自然排序关联数组?

Sam*_*nch 5 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)
Run Code Online (Sandbox Code Playgroud)

另一个示例数组:

array (size=2)
  0 => 
    array (size=1)
      'month' => string 'June' (length=4)
  1 => 
    array (size=1)
      'month' => string 'January' (length=7)
Run Code Online (Sandbox Code Playgroud)

我的第一个想法只是natsort()他们,但这需要一个正常的数组.下一个想法是使用array_multisort($array, SORT_NATURAL);,但由于关联数组,这不起作用.

那么,我如何使用自然排序对内部数组进行排序?此外,在这种情况下,保持数组键无关紧要.

编辑:

阵列1的预期输出将是相同的(因为Manager 1和Manager 3已经按顺序排列):

array (size=2)
  0 => 
    array (size=1)
      'manager' => string 'Manager 1' (length=9)
  1 => 
    array (size=1)
      'manager' => string 'Manager 3' (length=9)
Run Code Online (Sandbox Code Playgroud)

第二阵列的预期产出将使1月份超过6月("自然"订单):

// 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)
Run Code Online (Sandbox Code Playgroud)

rub*_*3ns 15

嗯!,你可以使用像这样的自然排序函数简化函数:

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