根据父多维数组在PHP中包含的值对其进行排序

根据父多维数组在PHP中包含的值对其进行排序,php,arrays,sorting,multidimensional-array,time,Php,Arrays,Sorting,Multidimensional Array,Time,我正在为一个篮球队创建一个网站,我想在一个按比赛开始日期排序的表格上显示球队时间表。我有一个名为$games的数组,其中另一个数组包含homeaway和time的键对 下面是用于创建以下数组的代码。我正在从API索引此信息 $index = 0; $games = array(); for ($i = 0; $i < sizeOf($response[$index]); $i++) { array_push($games, array("home" => $resp

我正在为一个篮球队创建一个网站,我想在一个按比赛开始日期排序的表格上显示球队时间表。我有一个名为$games的数组,其中另一个数组包含
home
away
time
的键对

下面是用于创建以下数组的代码。我正在从API索引此信息

$index = 0;
$games = array(); 

 for ($i = 0; $i < sizeOf($response[$index]); $i++) {  
    array_push($games, array("home" => $response[$index]['home']['name'], "away" => $response[$index]['away']['name'], "time" => $response[$index]['start_at'])); 
  }
  $index +=1;
我希望父索引按数组中时间的子值排序。最后,我希望数组看起来像这样

Array
(
    [1] => Array
        (
            [home] => School1
            [away] => School2
            [time] => 2017-02-24 19:00:00
        )

    [2] => Array
        (
            [home] => School1
            [away] => School2
            [time] => 2016-12-02 19:00:00
        )

    [0] => Array
        (
            [home] => School1
            [away] => School2
            [time] => 2015-01-27 19:00:00
        )
)
我查看了
array\u multisort()
函数,但找不到对实际父级排序的函数,只对数组中的键进行排序。我还查看了
asort()
,但遇到了相同的问题

非常感谢您的帮助


-凯尔顿

你想要的是运动。您可以执行以下操作:

usort($array, function($a, $b) {
   if($a['time'] < $b['time']) {
      return 1; 
   } else if ($a['time'] === $b['time']) {
      return 0; 
   }
   else {
     return -1; 
   }
});
usort($array,function($a,$b){
如果($a['time']<$b['time']){
返回1;
}else if($a['time']==$b['time'])){
返回0;
}
否则{
返回-1;
}
});

此解决方案比页面上的所有其他解决方案都简单! 虽然我假设所有这些
usort()
答案都提供了正确的结果,但问题是它们都没有找到最简单的解决方案

如果只将
time
元素声明为每个子数组的第一个元素,则可以避免使用“用户定义的比较函数”。使用
rsort()
将是处理排序任务的最有效方法:

设置(类似于此…)

这将生成如下所示的数组:

$game=[
    ["time"=>"2015-01-27 19:00:00","home"=>"School1","away"=>"School2"],
    ["time"=>"2017-02-24 19:00:00","home"=>"School1","away"=>"School2"],
    ["time"=>"2016-12-02 19:00:00","home"=>"School1","away"=>"School2"],
];
那么您的无条件排序解决方案是:

rsort($game);  // sort DESC

输出(使用
var\u导出($game);
):

Array
(
    [0] => Array
        (
            [home] => School1
            [away] => School2
            [time] => 2017-02-24 19:00:00
        )

    [1] => Array
        (
            [home] => School1
            [away] => School2
            [time] => 2016-12-02 19:00:00
        )

    [2] => Array
        (
            [home] => School1
            [away] => School2
            [time] => 2015-01-27 19:00:00
        )

)
foreach($response[$index] as $a){    
    $games[]=['time'=>$a['start_at'],'home'=>$a['home']['name'],'away'=>$a['away']['name']];
}
$game=[
    ["time"=>"2015-01-27 19:00:00","home"=>"School1","away"=>"School2"],
    ["time"=>"2017-02-24 19:00:00","home"=>"School1","away"=>"School2"],
    ["time"=>"2016-12-02 19:00:00","home"=>"School1","away"=>"School2"],
];
rsort($game);  // sort DESC
array (
  0 => 
  array (
    'time' => '2017-02-24 19:00:00',
    'home' => 'School1',
    'away' => 'School2',
  ),
  1 => 
  array (
    'time' => '2016-12-02 19:00:00',
    'home' => 'School1',
    'away' => 'School2',
  ),
  2 => 
  array (
    'time' => '2015-01-27 19:00:00',
    'home' => 'School1',
    'away' => 'School2',
  ),
)