我的标题为$events
的多维数组如下:
print_r($events);
Array
(
[0] => Array
(
[0] => Array
(
[rsvp_id] =>
[is_liked] =>
[group_name] => Student Organisation
[event_id] => 239
[time_stamp] => 1437065590 //Thu, 16 Jul 2015 16:53:10 GMT
)
)
[1] => Array
(
[0] => Array
(
[rsvp_id] =>
[is_liked] =>
[group_name] =>
[event_id] => 237
[time_stamp] => 1437065259 //Thu, 16 Jul 2015 16:47:39 GMT
)
)
[2] => Array
(
[0] => Array
(
[rsvp_id] =>
[is_liked] =>
[group_name] => TestGroupShweta
[event_id] => 238
[time_stamp] => 1437065491 //Thu, 16 Jul 2015 16:51:31 GMT
)
)
[3] => Array
(
[0] => Array
(
[rsvp_id] =>
[is_liked] =>
[group_name] =>
[event_id] => 252
[time_stamp] => 1438063373 //Tue, 28 Jul 2015 06:02:53 GMT
)
[1] => Array
(
[rsvp_id] =>
[is_liked] =>
[group_name] =>
[event_id] => 244
[time_stamp] => 1437475382 //Tue, 21 Jul 2015 10:43:02 GMT
)
[2] => Array
(
[rsvp_id] =>
[is_liked] =>
[group_name] => The Namesake
[event_id] => 243
[time_stamp] => 1437468870 //Tue, 21 Jul 2015 08:54:30 GMT
)
)
[4] => Array
(
[0] => Array
(
[rsvp_id] =>
[is_liked] =>
[group_name] =>
[event_id] => 242
[time_stamp] => 1437391684 //Mon, 20 Jul 2015 11:28:04 GMT
)
)
[5] => Array
(
[0] => Array
(
[rsvp_id] =>
[is_liked] =>
[group_name] =>
[event_id] => 201
[time_stamp] => 1428315119 //Mon, 06 Apr 2015 10:11:59 GMT
)
[1] => Array
(
[rsvp_id] =>
[is_liked] =>
[group_name] =>
[event_id] => 240
[time_stamp] => 1437114920 //Fri, 17 Jul 2015 06:35:20 GMT
)
[2] => Array
(
[rsvp_id] =>
[is_liked] =>
[group_name] =>
[event_id] => 241
[time_stamp] => 1437114922 // Fri, 17 Jul 2015 06:35:22 GMT
)
)
)
如果仔细观察索引[3]
和[5]
的元素包含三个内部数组元素。我想按照相应内部数组的键time_stamp
中出现的UNIX时间戳值的升序对这三个数组元素进行排序。
只有当存在多个内部数组元素时,才应执行此排序操作。在上面的数组中,只应在[3]
和[5]
的情况下执行,而不是为其他元素执行。
内部数组索引也应该改变(即从0,1,2,3,......等等)。
执行排序操作后,所需的排序数组应完全如下:
Array
(
[0] => Array
(
[0] => Array
(
[rsvp_id] =>
[is_liked] =>
[group_name] => Student Organisation
[event_id] => 239
[time_stamp] => 1437065590 //Thu, 16 Jul 2015 16:53:10 GMT
)
)
[1] => Array
(
[0] => Array
(
[rsvp_id] =>
[is_liked] =>
[group_name] =>
[event_id] => 237
[time_stamp] => 1437065259 //Thu, 16 Jul 2015 16:47:39 GMT
)
)
[2] => Array
(
[0] => Array
(
[rsvp_id] =>
[is_liked] =>
[group_name] => TestGroupShweta
[event_id] => 238
[time_stamp] => 1437065491 //Thu, 16 Jul 2015 16:51:31 GMT
)
)
[3] => Array
(
[0] => Array
(
[rsvp_id] =>
[is_liked] =>
[group_name] => The Namesake
[event_id] => 243
[time_stamp] => 1437468870 //Tue, 21 Jul 2015 08:54:30 GMT
)
[1] => Array
(
[rsvp_id] =>
[is_liked] =>
[group_name] =>
[event_id] => 244
[time_stamp] => 1437475382 //Tue, 21 Jul 2015 10:43:02 GMT
)
[2] => Array
(
[rsvp_id] =>
[is_liked] =>
[group_name] =>
[event_id] => 252
[time_stamp] => 1438063373 //Tue, 28 Jul 2015 06:02:53 GMT
)
)
[4] => Array
(
[0] => Array
(
[rsvp_id] =>
[is_liked] =>
[group_name] =>
[event_id] => 242
[time_stamp] => 1437391684 //Mon, 20 Jul 2015 11:28:04 GMT
)
)
[5] => Array
(
[0] => Array
(
[rsvp_id] =>
[is_liked] =>
[group_name] =>
[event_id] => 201
[time_stamp] => 1428315119 //Mon, 06 Apr 2015 10:11:59 GMT
)
[1] => Array
(
[rsvp_id] =>
[is_liked] =>
[group_name] =>
[event_id] => 240
[time_stamp] => 1437114920 //Fri, 17 Jul 2015 06:35:20 GMT
)
[2] => Array
(
[rsvp_id] =>
[is_liked] =>
[group_name] =>
[event_id] => 241
[time_stamp] => 1437114922 // Fri, 17 Jul 2015 06:35:22 GMT
)
)
)
为了实现这一点,我尝试了下面的代码,但它没有成功,它没有返回上面我想要的数组。我不明白我犯了哪些错误。请纠正我在代码中的错误。
foreach($events as $event) {
if(sizeof($event) > 1) {
foreach($event as &$allFeed) {
usort($allFeed,function($a,$b) {
return $a['time_stamp'] - $b['time_stamp'];
});
}
}
}
这应该以有效和可靠的方式完成。
尝试以下代码后得到的数组如下:
uasort($events,function($a,$b){
return strtotime($b[0]['time_stamp'])-strtotime($a[0]['time_stamp']);
});
print_r($events);
Array
(
[5] => Array
(
[0] => Array
(
[rsvp_id] => 1
[is_liked] =>
[group_name] =>
[event_id] => 201
[time_stamp] => 1428315119
)
[1] => Array
(
[rsvp_id] =>
[is_liked] =>
[group_name] =>
[event_id] => 240
[time_stamp] => 1437114920
)
[2] => Array
(
[rsvp_id] =>
[is_liked] =>
[group_name] =>
[event_id] => 241
[time_stamp] => 1437114922
)
)
[3] => Array
(
[0] => Array
(
[rsvp_id] =>
[is_liked] =>
[group_name] =>
[event_id] => 252
[time_stamp] => 1438063373
)
[1] => Array
(
[rsvp_id] =>
[is_liked] =>
[group_name] =>
[event_id] => 244
[time_stamp] => 1437475382
)
[2] => Array
(
[rsvp_id] => 0
[is_liked] =>
[group_name] => The Namesake
[event_id] => 243
[time_stamp] => 1437468870
)
)
[2] => Array
(
[0] => Array
(
[rsvp_id] => 0
[is_liked] =>
[group_name] => TestGroupShweta
[event_id] => 238
[time_stamp] => 1437065491
)
)
[0] => Array
(
[0] => Array
(
[rsvp_id] =>
[is_liked] =>
[group_name] => Student Organisation
[event_id] => 239
[time_stamp] => 1437065590
)
)
[1] => Array
(
[0] => Array
(
[rsvp_id] =>
[is_liked] =>
[group_name] =>
[event_id] => 237
[time_stamp] => 1437065259
)
)
[4] => Array
(
[0] => Array
(
[rsvp_id] => 1
[is_liked] => 3397
[group_name] =>
[event_id] => 242
[time_stamp] => 1437391684
)
)
)
答案 0 :(得分:2)
试试这个:
foreach($events as &$event) {
if(count($event) > 1) {
usort($event,function($a,$b) {
return $a['time_stamp'] - $b['time_stamp'];
});
}
}