<?php
/**
* Works fine if the key are not numerical
*/
$arrTags = [];
$arrTags['mango'] = 2;
$arrTags['orange'] = 4;
$arrTags['apple'] = 2;
$arrTags['banana'] = 3;
array_multisort(array_values($arrTags), SORT_DESC, array_keys($arrTags), SORT_ASC, $arrTags);
echo "Elegant solution works fine if keys are not numerical:\r\n";
var_dump($arrTags);
/**
* If keys are numerical, they will be ignored
*/
$arrTags = [];
$arrTags[10] = 2;
$arrTags[20] = 4;
$arrTags[30] = 2;
$arrTags[40] = 3;
array_multisort(array_values($arrTags), SORT_DESC, array_keys($arrTags), SORT_ASC, $arrTags);
echo "If keys are numerical, they will be ignored:\r\n";
var_dump($arrTags);
/**
* A slightly less elegant solution will work.
*/
$arrTags = [];
$arrTags[10] = 2;
$arrTags[20] = 4;
$arrTags[30] = 2;
$arrTags[40] = 3;
$keys= array_keys($arrTags);
$values= array_values($arrTags);
array_multisort($values, SORT_DESC, $keys, SORT_ASC);
$arrTags = array_combine($keys, $values);
echo "If numerical keys are important, the slightly less elegant solution will work:\r\n";
var_dump($arrTags);