Tuesday 14 August 2018

Sort Objects by Property with PHP

I recently needed to display a list of authors within a WordPress blog. The goal was to sort the author list by number of posts before outputting the list. The method for calculating number of posts isn't a sortable key within WordPress' get_posts, so I had to sort the result list myself. PHP's usort method, along with a custom function, allows you to accomplish the feat of sorting a collection of objects by key.

The PHP

The first step is creating the function that does the sorting -- this is that function:function sort_objects_by_total($a, $b) { 
 if($a->total_posts == $b->total_posts){ 
return 0 ; 
 return ($a->total_posts < $b->total_posts) ? -1 : 1; 
}


The function returns -1 (smaller than), 0 (equal to), or 1 (larger than) when doing the sort comparisons. The last is applying the sortation function to the array, which is done by usort:usort($users, 'sort_objects_by_total');


The code above now ensures that my authors array is sorted by total_posts. Keep this snippet in your PHP toolbox for the future -- I'm certain you'll need it at one time or another.

0 comments:

Post a Comment