今天去一个小公司面试,给了几道题,好久没做题了。。。遇到一个很有意思的题。题目如下:
假设有这样的一个数组
$list = ['mongo' => 101, 'redis' => 123, 'memcache' => 99, 'postgresql' => 101];
不使用系统函数对这个数组进行排序,相同的值则按照键排序。我看到这道题,我想可以先把键和值进行一个交换。然后先对键进行排序,然后再对新数组中的值进行排序。直接上代码:
function arrSort($arr) {
$newArr = [];
foreach($arr as $key => $val) {
if(isset($newArr[$val])) {
$newArr[$val] = array_merge((array) $key, (array) $newArr[$val]);
} else {
$newArr[$val] = $key;
}
}
$indexArr = array_keys($newArr);
bubbleSort($indexArr);
$res = [];
foreach ($indexArr as $_val) {
# code...
$res[$_val] = $newArr[$_val];
}