How to sort an array of associative arrays by the value of a given key in PHP?

Multisort function

$htmls = array();
$htmls[] = array('rating' => '10', 'html' => '10 stars');
$htmls[] = array('rating' => '5', 'html' => '5 stars');
$htmls[] = array('rating' => '2', 'html' => '2 stars');
$htmls[] = array('rating' => '4.9', 'html' => '4.9 stars');

$rating = array_column($htmls, 'rating');
array_multisort($rating, SORT_DESC, $htmls);

print_r($htmls);

usort

$htmls = array();
$htmls[] = array('rating' => '10', 'html' => '10 stars');
$htmls[] = array('rating' => '5', 'html' => '5 stars');
$htmls[] = array('rating' => '2', 'html' => '2 stars');
$htmls[] = array('rating' => '4.9', 'html' => '4.9 stars');

//Desc
usort($htmls, function ($item1, $item2) {
    return $item2['rating'] <=> $item1['rating'];
});

print_r($htmls);

Leave a Comment