PHP의 2차원 배열 정렬의 경우 PHP 내장 함수 uasort()를 사용할 수 있습니다.
예 1:
사용자 정의 비교 함수를 사용하여 값 정렬 배열에 넣어 인덱스를 유지한다 관련
콜백 함수는 다음과 같다. 참고로 콜백 함수의 반환 값이 음수이거나 false인 경우 콜백 함수의 첫 번째 매개변수가 두 번째 매개변수가 먼저 오고 두 번째 매개변수가 마지막에 배열됩니다.
$person = array( array('num'=>'001','id'=>6,'name'=>'zhangsan','age'=>21), array('num'=>'001','id'=>7,'name'=>'ahangsan','age'=>23), array('num'=>'003','id'=>1,'name'=>'bhangsan','age'=>23), array('num'=>'001','id'=>3,'name'=>'dhangsan','age'=>23), ); //负数或者false表示第一个参数应该在前 function sort_by_name($x,$y){ return strcasecmp($x['name'],$y['name']); }
은 다음과 같이 사용됩니다.
uasort($person,'sort_by_name');
다음은 참고 및 인터뷰용 2차원 배열 정렬 방법:
//$array 要排序的数组 //$row 排序依据列 //$type 排序类型[asc or desc] //return 排好序的数组 function array_sort($array,$row,$type){ $array_temp = array(); foreach($array as $v){ $array_temp[$v[$row]] = $v; } if($type == 'asc'){ ksort($array_temp); }elseif($type='desc'){ krsort($array_temp); }else{ } return $array_temp; }
예 2:
1차원 배열 정렬은 상대적으로 간단한 asort 및 ksort와 같은 일부 방법을 사용하여 수행할 수 있습니다. 2차원 배열의 정렬을 어떻게 구현하나요? array_multisort 및 usort를 사용하면
을 얻을 수 있습니다. 예를 들어 다음 배열은
코드는 다음과 같습니다.
$users = array( array('name' => 'tom', 'age' => 20) , array('name' => 'anny', 'age' => 18) , array('name' => 'jack', 'age' => 22) );
작은 것부터 큰 것까지 연령별로 정렬할 수 있으면 좋겠습니다. 저자는 두 가지 방법을 정리하여 모두에게 공유했습니다.
1. array_multisort를 사용하세요
이 방법을 사용하면 나이를 추출해서 1차원 배열로 저장한 후 정리해야 합니다. 나이순으로 오름차순. 구체적인 코드는 다음과 같습니다.
코드는 다음과 같습니다.
$ages = array(); foreach ($users as $user) { $ages[] = $user['age']; } array_multisort($ages, SORT_ASC, $users);
실행 후 $ users는 정렬된 배열입니다. 예, 인쇄하여 살펴볼 수 있습니다. 먼저 나이를 기준으로 오름차순으로 정렬한 후 이름을 기준으로 오름차순으로 정렬해야 하는 경우 방법은 위와 동일합니다. 즉, 추가로 이름 배열을 추출하면 다음과 같습니다.
코드는 다음과 같습니다.
array_multisort($ages, SORT_ASC, $names, SORT_ASC, $users);
2. usort
이 방법을 사용하면 가장 큰 장점은 좀 더 복잡한 정렬 방법을 사용자 정의합니다. 예를 들어 이름 길이를 기준으로 내림차순으로 정렬합니다.
코드는 다음과 같습니다.
usort($users, function($a, $b) { $al = strlen($a['name']); $bl = strlen($b['name']); if ($al == $bl) return 0; return ($al > $bl) ? -1 : 1; });
여기서는 익명 함수가 사용되며 추출이 가능합니다. 필요한 경우 별도로. 그 중 $a, $b는 $users 배열 아래의 요소로 이해하면 name 값을 직접 인덱싱하고 길이를 계산한 후 길이를 비교할 수 있습니다.
========================================== == =========================
그런데 PHP 정렬의 몇 가지 기능은 다음과 같습니다
2차원 배열 정렬 문제에 대한 자세한 설명 PHP 및 관련 기사에서는 PHP 중국어 웹사이트를 주목하세요!