根据父多维数组在PHP中包含的值对其进行排序
我正在为一个篮球队创建一个网站,我想在一个按比赛开始日期排序的表格上显示球队时间表。我有一个名为$games的数组,其中另一个数组包含根据父多维数组在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
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',
),
)