如何在PHP中按键对数组进行排序?

如何在PHP中按键对数组进行排序?,php,Php,考虑到上面的数组结构,我正在尝试按照各自子数组中的第一个日期键对键[“boat”]、[“sled”]、[“car”]进行排序。所以正确的关键顺序应该是汽车,船,雪橇。有没有一种优雅或简单的方法可以用PHP实现这一点 您需要使用uasort并比较每个数组的第一个键值。使用strotime转换为时间字符串以简化日期比较: Array( ["car"] => Array( [12/11/1989] => (...)

考虑到上面的数组结构,我正在尝试按照各自子数组中的第一个日期键对键
[“boat”]、[“sled”]、[“car”]
进行排序。所以正确的关键顺序应该是汽车,船,雪橇。有没有一种优雅或简单的方法可以用PHP实现这一点

您需要使用
uasort
并比较每个数组的第一个键值。使用
strotime
转换为时间字符串以简化日期比较:

Array(
    ["car"] => Array(
                     [12/11/1989] => (...)
                     [6/14/2011] => (...)
                     [5/2/2012] => (...)
               )
    ["sled"] => Array(
                     [1/15/2001] => (...)
                     [4/14/2004] => (...)
                     [5/23/2005] => (...)
               )
    ["boat"] => Array(
                     [12/1/1999] => (...)
                     [6/14/2000] => (...)
                     [8/23/2000] => (...)
               )
)

您需要使用
uasort
并比较每个数组的第一个键值。使用
strotime
转换为时间字符串以简化日期比较:

Array(
    ["car"] => Array(
                     [12/11/1989] => (...)
                     [6/14/2011] => (...)
                     [5/2/2012] => (...)
               )
    ["sled"] => Array(
                     [1/15/2001] => (...)
                     [4/14/2004] => (...)
                     [5/23/2005] => (...)
               )
    ["boat"] => Array(
                     [12/1/1999] => (...)
                     [6/14/2000] => (...)
                     [8/23/2000] => (...)
               )
)
使用
uasort()
使用用户提供的比较函数对数组进行排序,保留关联数组的键

array (
  'car' => 
  array (
    '12/11/1989' => 'first element',
    '6/14/2011' => 'second element',
    '5/2/2012' => 'third element',
  ),
  'boat' => 
  array (
    '12/1/1999' => 'first element',
    '6/14/2000' => 'second element',
    '8/23/2000' => 'third element',
  ),
  'sled' => 
  array (
    '1/15/2001' => 'first element',
    '4/14/2004' => 'second element',
    '5/23/2005' => 'third element',
  ),
)
使用
uasort()
使用用户提供的比较函数对数组进行排序,保留关联数组的键

array (
  'car' => 
  array (
    '12/11/1989' => 'first element',
    '6/14/2011' => 'second element',
    '5/2/2012' => 'third element',
  ),
  'boat' => 
  array (
    '12/1/1999' => 'first element',
    '6/14/2000' => 'second element',
    '8/23/2000' => 'third element',
  ),
  'sled' => 
  array (
    '1/15/2001' => 'first element',
    '4/14/2004' => 'second element',
    '5/23/2005' => 'third element',
  ),
)

使用
usort()
并提供一个函数,该函数从每个元素的
array\u keys()
中获取第一个键,将它们转换为日期,并对它们进行比较。此外,如果可以设置数组,使它们使用时间戳而不是日期,则排序会容易得多。@Barmar the usort()函数将为我不希望发生的原始外部数组分配新的键。我知道uksort(),但这将发送外部数组的键进行排序,这也不是我要做的。抱歉,
uasort()
。这将对值进行排序并保留键关联。@Barmar谢谢!我不知道uasort()函数。使用
usort()
并提供一个函数,该函数从每个元素的
array\u keys()
中获取第一个键,将它们转换为日期,并对它们进行比较。此外,如果您可以设置数组,使它们使用时间戳而不是日期,则排序会容易得多。@Barmar the usort()函数将为我不希望发生的原始外部数组分配新的键。我知道uksort(),但这将发送外部数组的键进行排序,这也不是我要做的。抱歉,
uasort()
。这将对值进行排序并保留键关联。@Barmar谢谢!我不知道uasort()函数。哦,有个快捷方式+1哦,有个快捷方式+1