Reputation: 85
I've been struggling trying to sort this array in PHP by "user_likes" and "created_time" I've looked at a few example on Stackoverflow but can't figure out the correct syntax. I want the order to go from the most "user_likes" and then "created_time" not sure if it's even possible. I've been trying with array_multisort with no luck.
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
)
)
)
Upvotes: 1
Views: 431
Reputation: 5061
Where $results is the array above, try
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;
}
});
Upvotes: 1
Reputation: 324650
You want usort
. Have the callback compare the user_likes
, then the created_time
.
Upvotes: 1