PHP에서 배열을 정렬하는 방법은 다양합니다. 이 기사에서는 PHP에서 array_multisort() 함수를 사용하여 다차원 배열 정렬을 구현하는 방법과 사용자 정의 함수를 통해 다차원 배열을 정렬하는 방법을 공유합니다.
PHP에 내장된 array_multisort 함수를 사용하여 정렬
<?php $data = array(); $data[] = array('volume' => 67, 'edition' => 2); $data[] = array('volume' => 86, 'edition' => 1); $data[] = array('volume' => 85, 'edition' => 6); $data[] = array('volume' => 98, 'edition' => 2); $data[] = array('volume' => 86, 'edition' => 6); $data[] = array('volume' => 67, 'edition' => 7); // 取得列的列表 foreach ($data as $key => $row) { $volume[$key] = $row['volume']; $edition[$key] = $row['edition']; } array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data); print_r($data); ?>
출력 결과:
Array ( [0] => Array ( [volume] => 98 [edition] => 2 ) [1] => Array ( [volume] => 86 [edition] => 1 ) [2] => Array ( [volume] => 86 [edition] => 6 ) [3] => Array ( [volume] => 85 [edition] => 6 ) [4] => Array ( [volume] => 67 [edition] => 2 ) [5] => Array ( [volume] => 67 [edition] => 7 ) )
array_multisort의 공식 문서에도 더 자세한 지침이 있습니다
2. 사용자 정의 함수 정렬 1
<?php $data = array(); $data[] = array('volume' => 67, 'edition' => 2); $data[] = array('volume' => 86, 'edition' => 1); $data[] = array('volume' => 85, 'edition' => 6); $data[] = array('volume' => 98, 'edition' => 2); $data[] = array('volume' => 86, 'edition' => 6); $data[] = array('volume' => 67, 'edition' => 7); // 取得列的列表 foreach ($data as $key => $row) { $volume[$key] = $row['volume']; $edition[$key] = $row['edition']; } $ret = arraySort($data, 'volume', 'desc'); print_r($ret); /** * @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); reset($keysvalue); foreach ($keysvalue as $k => $v) { $new_array[$k] = $arr[$k]; } return $new_array; } ?>
출력 결과:
Array ( [3] => Array ( [volume] => 98 [edition] => 2 ) [4] => Array ( [volume] => 86 [edition] => 6 ) [1] => Array ( [volume] => 86 [edition] => 1 ) [2] => Array ( [volume] => 85 [edition] => 6 ) [5] => Array ( [volume] => 67 [edition] => 7 ) [0] => Array ( [volume] => 67 [edition] => 2 ) )
이 사용자 정의 함수와 시스템 함수의 한 가지 차이점은 사용자 정의 함수가 특정 키에 대한 정렬만 지원한다는 것입니다. 여러 키에 대한 정렬을 지원하려면 이를 여러 번 실행해야 합니다. 시스템 함수 array_multisort는 여러 키를 한 번에 정렬할 수 있으며 여러 정렬 규칙을 지정할 수 있습니다. 시스템 함수를 사용하는 것이 좋습니다. 결국 C의 하단에 구현됩니다. 예, 이것은 사용자 정의 함수를 통해 배열을 정렬하는 방법의 예일 뿐입니다. 물론 이 사용자 정의 함수를 확장하여 더 많은 정렬 규칙을 지원할 수도 있습니다. 순위, 리더보드, 결과 등의 시나리오에 사용됩니다. 아직도 많이 있습니다.
3. 사용자 정의 함수 정렬 2
다음 함수는 지정된 키 값에 따라 주어진 2차원 배열을 정렬합니다. 먼저 함수 정의를 살펴보겠습니다.
function array_sort($arr,$keys,$type='asc'){ $keysvalue = $new_array = array(); foreach ($arr as $k=>$v){ $keysvalue[$k] = $v[$keys]; } if($type == 'asc'){ asort($keysvalue); }else{ arsort($keysvalue); } reset($keysvalue); foreach ($keysvalue as $k=>$v){ $new_array[$k] = $arr[$k]; } return $new_array; }
에 따라 2차원 배열을 정렬할 수 있습니다. 지정된 키 값을 기준으로 정렬합니다. 오름차순 또는 내림차순을 지정할 수도 있습니다(기본값은 오름차순). 사용 예:
$array = array( array('name'=>'手机','brand'=>'诺基亚','price'=>1050), array('name'=>'笔记本电脑','brand'=>'lenovo','price'=>4300), array('name'=>'剃须刀','brand'=>'飞利浦','price'=>3100), array('name'=>'跑步机','brand'=>'三和松石','price'=>4900), array('name'=>'手表','brand'=>'卡西欧','price'=>960), array('name'=>'液晶电视','brand'=>'索尼','price'=>6299), array('name'=>'激光打印机','brand'=>'惠普','price'=>1200) ); $ShoppingList = array_sort($array,'price'); print_r($ShoppingList);
위는 2차원 배열 $array를 '가격'에 따라 낮은 것부터 높은 것 순으로 정렬하는 것입니다. '.
관련 추천:
위 내용은 PHP에서 array_multisort() 함수를 사용하여 다차원 배열 정렬 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!