>  기사  >  백엔드 개발  >  PHP에서 2차원 배열 정렬을 구현하는 방법

PHP에서 2차원 배열 정렬을 구현하는 방법

墨辰丷
墨辰丷원래의
2018-06-07 13:57:591231검색

이 글은 주로 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.