PHP排序复杂多维数组
我一直在努力用PHP按“user_likes”和“created_time”对这个数组进行排序,我看了几个关于Stackoverflow的例子,但没有找到正确的语法。我希望订单从最“用户喜欢”开始,然后是“创建时间”,甚至不确定这是否可行。我一直在尝试array_multisort,但运气不佳PHP排序复杂多维数组,php,Php,我一直在努力用PHP按“user_likes”和“created_time”对这个数组进行排序,我看了几个关于Stackoverflow的例子,但没有找到正确的语法。我希望订单从最“用户喜欢”开始,然后是“创建时间”,甚至不确定这是否可行。我一直在尝试array_multisort,但运气不佳 Array ( [0] => Array (
Array
(
[0] => Array
(
[taskuser] => Array
(
[profilepic] => 1e605ad76c82d41f6467c2525f796ebd.jpg
[postid] => 598
[message] => sweet!
[created_time] => 2012-04-23 13:53:58
)
[time_created] => 3d
[likes] => Array
(
[like_type] => 0
)
[comments] => Array
(
[comments] => 0
)
[user_likes] => Array
(
[user_likes] => 0
)
[user_comments] => Array
(
[user_comments] => 0
)
[user_favorite] => Array
(
[isFav] => 0
)
)
[1] => Array
(
[taskuser] => Array
(
[profilepic] => 1e605ad76c82d41f6467c2525f796ebd.jpg
[postid] => 598
[message] => sweet!
[created_time] => 2012-04-23 14:05:20
)
[time_created] => 3d
[likes] => Array
(
[like_type] => 0
)
[comments] => Array
(
[comments] => 0
)
[user_likes] => Array
(
[user_likes] => 0
)
[user_comments] => Array
(
[user_comments] => 0
)
[user_favorite] => Array
(
[isFav] => 0
)
)
[2] => Array
(
[taskuser] => Array
(
[profilepic] => 1e605ad76c82d41f6467c2525f796ebd.jpg
[postid] => 598
[message] => sweet!
[created_time] => 2012-04-23 14:09:11
)
[time_created] => 3d
[likes] => Array
(
[like_type] => 0
)
[comments] => Array
(
[comments] => 0
)
[user_likes] => Array
(
[user_likes] => 0
)
[user_comments] => Array
(
[user_comments] => 0
)
[user_favorite] => Array
(
[isFav] => 0
)
)
[3] => Array
(
[taskuser] => Array
(
[profilepic] => 1e605ad76c82d41f6467c2525f796ebd.jpg
[postid] => 598
[message] => sweet!
[created_time] => 2012-04-23 14:11:35
)
[time_created] => 3d
[likes] => Array
(
[like_type] => 0
)
[comments] => Array
(
[comments] => 0
)
[user_likes] => Array
(
[user_likes] => 0
)
[user_comments] => Array
(
[user_comments] => 0
)
[user_favorite] => Array
(
[isFav] => 0
)
)
[4] => Array
(
[taskuser] => Array
(
[profilepic] => 1e605ad76c82d41f6467c2525f796ebd.jpg
[postid] => 598
[message] => sweet!
[created_time] => 2012-05-25 11:22:17
)
[time_created] => 3d
[likes] => Array
(
[like_type] => 3
)
[comments] => Array
(
[comments] => 1
)
[user_likes] => Array
(
[user_likes] => 0
)
[user_comments] => Array
(
[user_comments] => 0
)
[user_favorite] => Array
(
[isFav] => 0
)
)
[5] => Array
(
[taskuser] => Array
(
[profilepic] => 1e605ad76c82d41f6467c2525f796ebd.jpg
[postid] => 598
[message] => sweet!
[created_time] => 2012-04-17 15:56:00
)
[time_created] => 3d
[likes] => Array
(
[like_type] => 0
)
[comments] => Array
(
[comments] => 0
)
[user_likes] => Array
(
[user_likes] => 0
)
[user_comments] => Array
(
[user_comments] => 0
)
[user_favorite] => Array
(
[isFav] => 0
)
)
[6] => Array
(
[taskuser] => Array
(
[profilepic] => 1e605ad76c82d41f6467c2525f796ebd.jpg
[postid] => 598
[message] => sweet!
[created_time] => 2012-04-17 15:58:03
)
[time_created] => 3d
[likes] => Array
(
[like_type] => 0
)
[comments] => Array
(
[comments] => 0
)
[user_likes] => Array
(
[user_likes] => 0
)
[user_comments] => Array
(
[user_comments] => 0
)
[user_favorite] => Array
(
[isFav] => 0
)
)
[7] => Array
(
[taskuser] => Array
(
[profilepic] => 1e605ad76c82d41f6467c2525f796ebd.jpg
[postid] => 598
[message] => sweet!
[created_time] => 2012-04-20 16:24:53
)
[time_created] => 3d
[likes] => Array
(
[like_type] => 0
)
[comments] => Array
(
[comments] => 0
)
[user_likes] => Array
(
[user_likes] => 0
)
[user_comments] => Array
(
[user_comments] => 0
)
[user_favorite] => Array
(
[isFav] => 0
)
)
[8] => Array
(
[taskuser] => Array
(
[profilepic] => 1e605ad76c82d41f6467c2525f796ebd.jpg
[postid] => 598
[message] => sweet!
[created_time] => 2012-05-11 15:56:55
)
[time_created] => 3d
[likes] => Array
(
[like_type] => 1
)
[comments] => Array
(
[comments] => 0
)
[user_likes] => Array
(
[user_likes] => 0
)
[user_comments] => Array
(
[user_comments] => 0
)
[user_favorite] => Array
(
[isFav] => 0
)
)
[9] => Array
(
[taskuser] => Array
(
[profilepic] => 1e605ad76c82d41f6467c2525f796ebd.jpg
[postid] => 598
[message] => sweet!
[created_time] => 2012-05-11 16:05:35
)
[time_created] => 3d
[likes] => Array
(
[like_type] => 1
)
[comments] => Array
(
[comments] => 4
)
[user_likes] => Array
(
[user_likes] => 0
)
[user_comments] => Array
(
[user_comments] => 0
)
[user_favorite] => Array
(
[isFav] => 0
)
)
[10] => Array
(
[taskuser] => Array
(
[profilepic] => 1e605ad76c82d41f6467c2525f796ebd.jpg
[postid] => 598
[message] => sweet!
[created_time] => 2012-05-30 21:04:00
)
[time_created] => 3d
[likes] => Array
(
[like_type] => 0
)
[comments] => Array
(
[comments] => 0
)
[user_likes] => Array
(
[user_likes] => 0
)
[user_comments] => Array
(
[user_comments] => 0
)
[user_favorite] => Array
(
[isFav] => 0
)
)
[11] => Array
(
[taskuser] => Array
(
[profilepic] => 1e605ad76c82d41f6467c2525f796ebd.jpg
[postid] => 598
[message] => sweet!
[created_time] => 2012-05-30 21:04:55
)
[time_created] => 3d
[likes] => Array
(
[like_type] => 0
)
[comments] => Array
(
[comments] => 0
)
[user_likes] => Array
(
[user_likes] => 0
)
[user_comments] => Array
(
[user_comments] => 0
)
[user_favorite] => Array
(
[isFav] => 0
)
)
[12] => Array
(
[taskuser] => Array
(
[profilepic] => 1e605ad76c82d41f6467c2525f796ebd.jpg
[postid] => 598
[message] => sweet!
[created_time] => 2012-04-17 15:54:32
)
[time_created] => 3d
[likes] => Array
(
[like_type] => 0
)
[comments] => Array
(
[comments] => 0
)
[user_likes] => Array
(
[user_likes] => 0
)
[user_comments] => Array
(
[user_comments] => 0
)
[user_favorite] => Array
(
[isFav] => 0
)
)
[13] => Array
(
[taskuser] => Array
(
[profilepic] => 1e605ad76c82d41f6467c2525f796ebd.jpg
[postid] => 598
[message] => sweet!
[created_time] => 2012-04-17 15:54:54
)
[time_created] => 3d
[likes] => Array
(
[like_type] => 0
)
[comments] => Array
(
[comments] => 0
)
[user_likes] => Array
(
[user_likes] => 0
)
[user_comments] => Array
(
[user_comments] => 0
)
[user_favorite] => Array
(
[isFav] => 0
)
)
[14] => Array
(
[taskuser] => Array
(
[profilepic] => 1e605ad76c82d41f6467c2525f796ebd.jpg
[postid] => 598
[message] => sweet!
[created_time] => 2012-04-17 15:53:19
)
[time_created] => 3d
[likes] => Array
(
[like_type] => 0
)
[comments] => Array
(
[comments] => 1
)
[user_likes] => Array
(
[user_likes] => 0
)
[user_comments] => Array
(
[user_comments] => 0
)
[user_favorite] => Array
(
[isFav] => 0
)
)
)
你想要的。让回调函数比较
用户喜欢的
,然后比较创建的时间
,其中$results是上面的数组,请重试
usort($results, function($a, $b){
//check case for same number of user likes
if ($a['user_likes']['user_likes'] == $b['user_likes']['user_likes']){
if (strtotime($a['taskuser']['created_time']) == strtotime($b['taskuser']['created_time'])){
return 0;
} else if (strtotime($a['taskuser']['created_time']) < strtotime($b['taskuser']['created_time'])){
return 1;
} else {
return -1;
}
} else if ($a['user_likes']['user_likes'] < $b['user_likes']['user_likes']){
return 1;
} else {
return -1;
}
});
usort($results,function($a,$b){
//检查案例是否有相同数量的用户喜欢
如果($a['user\u likes']['user\u likes']=$b['user\u likes']['user\u likes'])){
if(strottime($a['taskuser']['created\u time'])==strottime($b['taskuser']['created\u time'])){
返回0;
}else if(strotime($a['taskuser']['created_time'])
这假设您使用的是PHP5.3,因为它对回调使用闭包。