Home >Backend Development >PHP Problem >How to sort an array in php and keep the key values unchanged
php method to sort the array and keep the key values unchanged: first we need to take out the key names of the array; then sort the key names; finally assign values according to the corresponding key names to form a new array and return That’s it.
Implementation code:
(Recommended tutorial: php video tutorial)
$data = array( 1001 => array( 'age' => 22, 'name' => '鸠摩智' ), 1007 => array( 'age' => 21, 'name' => '慕容复' ), 1004 => array( 'age' => 27, 'name' => '乔帮主' ) ); //根据字段age对数组$data进行降序排列 $data = arraySort($data, "age", "desc" ); print_r($data); /** * @desc arraySort php二维数组排序 按照指定的key 对数组进行自然排序 * @param array $arr 将要排序的数组 * @param string $keys 指定排序的key * @param string $type 排序类型 asc | desc * @return array */ function arraySort($arr, $keys, $type = 'asc') { $keysvalue = $new_array = array(); foreach ($arr as $k => $v) { $keysvalue[$k] = $v[$keys]; } if ($type == 'asc') { natsort($keysvalue); } if ($type == 'desc') { natsort($keysvalue); $keysvalue = array_reverse($keysvalue, TRUE); // 将原数组中的元素顺序翻转,如果第二个参数指定为 true,则元素的键名保持不变 } foreach ($keysvalue as $k => $v) { $new_array[$k] = $arr[$k]; } return $new_array; }
Here we can also simplify the arraySort function, and the processing result is the same:
/** * @desc arraySort php二维数组排序 按照指定的key 对数组进行自然排序 * @param array $arr 将要排序的数组 * @param string $keys 指定排序的key * @param string $type 排序类型 asc | desc * @return array */ function arraySort($arr, $keys, $type = 'asc') { $keysvalue = $new_array = array(); foreach ($arr as $k => $v) { $keysvalue[$k] = $v[$keys]; } $type == 'asc' ? asort($keysvalue) : arsort($keysvalue); foreach ($keysvalue as $k => $v) { $new_array[$k] = $arr[$k]; } return $new_array; }
Output result:
The key name remains unchanged, and the implementation The principle is very simple, first take out the key names, then sort the key names, and then assign values to the corresponding key names to form a new array and return it.
As you can see, here we mainly use several core sorting functions of PHP.
asort() sorts the associative array in ascending order by key value.
arsort() sorts the associative array in descending order by key value.
natsort() implements "natural sorting", that is, the sorting method of numbers from 1 to 9, and the sorting method of letters from a to z, with shorter ones given priority. The index of the array remains associated with the cell value.
Note: In the natural sorting algorithm, the number 2 is less than the number 10. In computer sorting algorithms, 10 is less than 2 because the first number in "10" is less than 2.
Related recommendations: php training
The above is the detailed content of How to sort an array in php and keep the key values unchanged. For more information, please follow other related articles on the PHP Chinese website!