在 PHP 中,sort() 函数可以用来对数组按值进行排序,但其缺点是会破坏数组的键名。为了保留键名,我们可以使用自定义的函数来实现这一功能。
下面是一个自定义函数,它能够在按值排序的同时保留数组的键名:
function sortByValue($array) { $sortedValues = array_values($array); asort($sortedValues); $sortedKeys = array_keys($sortedValues); return array_combine($sortedKeys, $array); }
假设我们有一个带有键名的数组,以下代码展示了如何使用自定义函数来对数组进行排序:
$array = [ 'apple' => 10, 'banana' => 20, 'orange' => 5 ]; $sortedArray = sortByValue($array); print_r($sortedArray);
该代码执行后的输出结果为:
Array ( [orange] => 5 [apple] => 10 [banana] => 20 )
可以看到,数组按值升序排序,并且键名没有被改变。
通过本文介绍的方法,PHP 开发者可以轻松地对数组按值进行排序并保留键名。这种方式避免了使用 sort() 函数时丢失键名的问题,非常适用于需要保持键名与其对应值的情况下。