PHP에서 배열을 정렬하고 키 값을 변경하지 않는 방법: 먼저 배열의 키 이름을 가져온 다음 마지막으로 해당 키 이름에 따라 값을 할당해야 합니다. 새로운 배열을 만들고 반환합니다.
구현 코드:
(권장 튜토리얼: php 비디오 튜토리얼)
$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; }
여기서 arraySort 함수도 단순화할 수 있으며 처리 결과는 동일합니다.
/** * @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; }
출력 결과:
키 이름은 그대로 유지되며 구현 원리는 매우 간단합니다. 먼저 키 이름을 꺼낸 다음 키 이름을 정렬한 다음 해당 키 이름에 값을 할당하여 새로운 배열을 구성하고 반환합니다. 그것.
보시다시피 여기서는 주로 PHP의 몇 가지 핵심 정렬 기능을 사용합니다.
asort()는 연관 배열을 키 값에 따라 오름차순으로 정렬합니다.
arsort()는 연관 배열을 키 값에 따라 내림차순으로 정렬합니다.
natsort()는 "자연스러운 정렬", 즉 1부터 9까지의 숫자를 정렬하는 방법과 a부터 z까지의 문자를 짧은 문자부터 정렬하는 방법을 구현합니다. 배열의 인덱스는 셀 값과 연결된 상태로 유지됩니다.
참고: 자연 정렬 알고리즘에서는 숫자 2가 숫자 10보다 작습니다. 컴퓨터 정렬 알고리즘에서는 "10"의 첫 번째 숫자가 2보다 작기 때문에 10은 2보다 작습니다.
관련 권장 사항: php training
위 내용은 PHP에서 배열을 정렬하고 키 값을 변경하지 않고 유지하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!