이 글은 주로 PHP에서 2차원 배열 정렬을 구현하는 방법을 소개합니다. 관심 있는 친구들이 참고하면 도움이 될 것입니다.
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 정렬의 몇 가지 기능은 다음과 같습니다
sort 배열 정렬일반적으로 한 가지에 적합합니다. -차원 인덱스 배열, 인덱스를 유지하지 않습니다.
rsort 배열을 역방향으로 정렬 sort
asort와 동일한 사용법 배열을 정렬하고 인덱스 관계를 유지하여 값을 정렬합니다. 일반적으로 1차원 배열에 적합합니다. 인덱스 관계 유지
arsort 배열 역정렬 및 인덱스 관계 유지asort와 사용법 동일
ksort 키 이름으로 배열 정렬
krsort 키 이름으로 배열 역정렬
요약 : 이 글의 내용은 여기까지입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다.
관련 권장 사항:
php의 readfile() 함수로 파일 크기를 설정하는 방법
PHP 사용자 정의 이미지 센터링 및 자르기 기능에 대한 자세한 설명
PHP는 폴더 복사, 삭제, 보기를 구현합니다. 반복에 따른 크기 등
위 내용은 PHP에서 2차원 배열 정렬을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!