PHP에서 다차원 배열을 정렬하는 방법
PHP 5.3을 위한 일반화된 솔루션 소개
구현:
function make_comparer() { // Normalize criteria up front $criteria = func_get_args(); foreach ($criteria as $index => $criterion) { $criteria[$index] = is_array($criterion) ? array_pad($criterion, 3, null) : array($criterion, SORT_ASC, null); } return function($first, $second) use (&$criteria) { foreach ($criteria as $criterion) { list($column, $sortOrder, $projection) = $criterion; $sortOrder = $sortOrder === SORT_DESC ? -1 : 1; if ($projection) { $lhs = call_user_func($projection, $first[$column]); $rhs = call_user_func($projection, $second[$column]); } else { $lhs = $first[$column]; $rhs = $second[$column]; } if ($lhs < $rhs) { return -1 * $sortOrder; } elseif ($lhs > $rhs) { return 1 * $sortOrder; } } return 0; // tiebreakers exhausted }; }
고급 기능:
(1) 다중 정렬 열:
usort($data, make_comparer('number', 'name'));
(2) 역방향 정렬:
usort($data, make_comparer(['name', SORT_DESC]));
(3) 사용자 정의 투영:
usort($data, make_comparer(['birthday', SORT_ASC, 'date_create']));
(4) 결합 기능:
usort($data, make_comparer( ['number', SORT_DESC], ['birthday', SORT_ASC, 'date_create'] ));
이점:
위 내용은 유연하고 재사용 가능한 함수를 사용하여 PHP에서 다차원 배열을 정렬하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!