이 문제는 Mysql의 order by와 다소 유사합니다. 필요한 것은 배열의 다양한 필드 정렬을 시뮬레이션하는 것입니다.
다음과 같은 배열이 있다고 가정합니다:
$beforeSort = [
"0" => ["이름" => "장산", "영어" => 60, "수학" => 50
"1" => ["이름" => "이영" => 50, "중국어" => 70
"2" => ["이름" => "老王", "english" => 30, "math" => 80
];
이제 배열에서 chinese
순서를 따라야 합니다. 동일한 경우 math
순서를 따라야 합니다. 최종 결과는 다음과 같습니다.< /p>
$afterSort = [
"2" => ["이름" => "老王", "english" => 30, "math" => 80
"0" => ["이름" => "장산", "영어" => 60, "수학" => 50
"1" => ["이름" => "이영" => 50, "중국어" => 70
];
이를 달성할 수 있는 다른 방법이 있나요?
大家讲道理2017-05-16 13:10:20
배열을 집합으로 변환한 후 처리할 수 있습니다. PHP 컬렉션을 사용하여 구현된 정렬 방법은 다양한 복잡한 정렬에 특화되어 있습니다
PHPz2017-05-16 13:10:20
<?php
//이제 배열에서 중국어 순서를 따라야 합니다. 동일하면 수학 순서를 따라야 합니다. 최종 결과는 다음 배열이어야 합니다.
$beforeSort = [
];
$data_math = array_column($beforeSort,'math');
$data_chinese = array_column($beforeSort,'chinese');
array_multisort($data_chinese,SORT_ASC,$data_math,SORT_ASC,$beforeSort); );
天蓬老师2017-05-16 13:10:20
$beforeSort = [
으아아아];
foreach($beforeSort as $key => $value) {
으아아아}
array_multisort($chinese, SORT_ASC, $math, SORT_ASC, $beforeSort);
print_r($beforeSort);