PHP에서는 배열을 정렬해야 할 때 sort() 및 rsort()와 같은 내장 함수를 사용하여 배열의 요소를 정렬할 수 있습니다. 그러나 때로는 배열의 두 필드를 기준으로 정렬해야 하는 경우 usort() 함수를 사용해야 합니다.
usort — 사용자 정의 비교 함수를 사용하여 배열의 값을 정렬합니다.
구문: bool usort (array &$array, callable $value_compare_func)
이 함수는 지정된 값을 사용하여 배열의 값을 정렬합니다. 비교 기능 . 이 함수는 원래 배열에 직접적인 영향을 미치며 정렬된 배열을 반환하지 않는다는 점에 유의해야 합니다.
Usage Scenarios
일부 복잡한 애플리케이션을 처리할 때 여러 필드를 기준으로 정렬해야 하는 경우가 있습니다. 예를 들어 먼저 가격을 기준으로 정렬한 다음 가격이 동일할 때 판매량을 기준으로 정렬한 다음 usort를 사용해야 합니다. () 함수를 사용하여 이를 달성합니다.
예제 코드
다음은 usort() 함수를 사용하여 배열을 정렬하는 실제 예입니다. 제품 이름, 가격, 판매량 및 기타 정보가 포함된 제품 배열이 있다고 가정해 보겠습니다. 이제 가격과 판매량을 기준으로 제품을 정렬해야 합니다.
$products = [ [ "name" => "商品A", "price" => 100, "sales" => 200 ], [ "name" => "商品B", "price" => 120, "sales" => 150 ], [ "name" => "商品C", "price" => 80, "sales" => 300 ], ]; function cmp($a, $b) { if ($a['price'] == $b['price']) { return $a['sales'] < $b['sales'] ? 1 : -1; } return $a['price'] > $b['price'] ? 1 : -1; } usort($products, "cmp"); print_r($products);
실행 결과:
Array ( [0] => Array ( [name] => 商品C [price] => 80 [sales] => 300 ) [1] => Array ( [name] => 商品A [price] => 100 [sales] => 200 ) [2] => Array ( [name] => 商品B [price] => 120 [sales] => 150 ) )
여기에서는 두 제품의 가격과 판매량을 비교하고 가격이 작은 것부터 큰 것, 판매량이 큰 것부터 적은 것 순으로 정렬하는 cmp() 함수를 정의합니다. 그런 다음 usort() 함수를 사용하여 제품 배열을 정렬하고 정렬된 결과를 인쇄합니다.
요약
usort() 함수를 사용하면 배열을 유연하게 정렬하고 여러 필드를 기반으로 정렬하여 더 복잡한 애플리케이션 요구 사항을 충족할 수 있습니다. 여기서 주목해야 할 점은 정렬 함수는 두 배열 요소를 비교하므로 $a와 $b는 각각 배열의 두 요소를 나타내기 때문에 이 함수는 양수, 음수, 0의 세 가지 값 중 하나를 반환해야 한다는 것입니다. , $a 비율 $b가 더 크거나 작거나 같음을 나타냅니다.
위 내용은 PHP의 두 필드를 기반으로 배열을 정렬하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!