Arsort를 사용하여 Array_Map과 결합하여 복잡한 데이터를 정렬하는 가장 좋은 방법을 달성하는 방법은 무엇입니까?
PHP에서 Arsort 및 Array_map 은 매우 유용한 두 가지 기능입니다. 전자는 값으로 내림차순으로 배열을 정렬하는 데 사용되는 반면, 후자는 배열에서 각 요소를 사용자 정의하는 데 사용될 수 있습니다. 이 두 기능은 복잡한 데이터의 정렬을 달성하여 특히 다차원 배열을 처리하거나 강력한 응용 프로그램 시나리오를 갖는 특정 조건에 따라 데이터를 정렬해야 할 때 복잡한 데이터의 정렬을 달성 할 수 있습니다.
이 기사에서는 Arsort 및 Array_map을 사용하여 복잡한 데이터를 정렬하는 가장 좋은 방법을 달성하고 모든 사람이 실제 예를 통해이를 더 잘 이해하도록 돕는 방법을 설명합니다.
ARSORT : ARSORT는 값으로 하강 순서로 배열을 정렬하는 데 사용되며 인덱스 관계를 변경하지 않도록합니다. 배열의 값이 숫자 인 경우 Arsort는 배열을 크기별로 정렬하고 값이 문자열 인 경우 사전 순서로 정렬됩니다.
Array_Map : array_map을 사용하면 배열의 각 요소에 콜백 함수를 적용하여 새 배열을 반환 할 수 있습니다. 정렬하기 전에 Array_Map을 사용하여 분류 요구 사항을 충족하기 위해 배열의 요소로 데이터를 변환, 포맷 또는 추출하십시오.
학생들의 이름과 성적을 저장하는 다차원 배열이 있다고 가정 해 봅시다.
<span><span><span class="hljs-variable">$students</span></span><span> = [
[</span><span><span class="hljs-string">"name"</span></span><span> => </span><span><span class="hljs-string">"Alice"</span></span><span>, </span><span><span class="hljs-string">"score"</span></span><span> => </span><span><span class="hljs-number">90</span></span><span>],
[</span><span><span class="hljs-string">"name"</span></span><span> => </span><span><span class="hljs-string">"Bob"</span></span><span>, </span><span><span class="hljs-string">"score"</span></span><span> => </span><span><span class="hljs-number">75</span></span><span>],
[</span><span><span class="hljs-string">"name"</span></span><span> => </span><span><span class="hljs-string">"Charlie"</span></span><span>, </span><span><span class="hljs-string">"score"</span></span><span> => </span><span><span class="hljs-number">85</span></span><span>],
[</span><span><span class="hljs-string">"name"</span></span><span> => </span><span><span class="hljs-string">"David"</span></span><span>, </span><span><span class="hljs-string">"score"</span></span><span> => </span><span><span class="hljs-number">95</span></span><span>]
];
</span></span>
우리는이 학생들을 점수 로 내림차순으로 정렬하고 싶습니다.
먼저 Array_Map을 사용하여 점수 ( 점수 )를 추출한 다음 점수를 Arsort 와 함께 하강 순서로 정렬 한 다음 마지막으로 정렬 된 점수에 따라 학생의 배열을 재 배열하십시오.
<span><span><span class="hljs-comment">// 학생 결과를 추출하십시오</span></span><span>
</span><span><span class="hljs-variable">$scores</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_map</span></span><span>(function(</span><span><span class="hljs-variable">$student</span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$student</span></span><span>[</span><span><span class="hljs-string">'score'</span></span><span>];
}, </span><span><span class="hljs-variable">$students</span></span><span>);
</span><span><span class="hljs-comment">// 결과를 내림차순으로 정렬하십시오</span></span><span>
</span><span><span class="hljs-title function_ invoke__">arsort</span></span><span>(</span><span><span class="hljs-variable">$scores</span></span><span>);
</span><span><span class="hljs-comment">// 정렬 된 성적을 기준으로 학생 배열을 재 배열하십시오</span></span><span>
</span><span><span class="hljs-variable">$sorted_students</span></span><span> = [];
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$scores</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$index</span></span><span> => </span><span><span class="hljs-variable">$score</span></span><span>) {
</span><span><span class="hljs-variable">$sorted_students</span></span><span>[] = </span><span><span class="hljs-variable">$students</span></span><span>[</span><span><span class="hljs-variable">$index</span></span><span>];
}
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$sorted_students</span></span><span>);
</span></span>
Array_Map : Array_Map을 사용하여 $ 학생 배열에서 각 요소 (학생당)에서 익명 기능을 실행하여 학생의 성적을 반환합니다. 마지막으로, 우리는 성적 만 포함하는 $ 점수를 얻습니다.
ARSORT : ARSORT를 사용하여 점수 배열을 내림차순으로 정렬하여 성적이 높은 학생들이 최전선에 있는지 확인하십시오.
학생 배열을 재 배열 : Arsort는 등급별로 정렬 된 배열을 반환하지만 정렬 된 인덱스에 따라 원래 학생 배열을 재 배열해야합니다. 여기서, Foreach 루프는 정렬 된 등급 지수에 따라 학생 배열 $ 학생 의 요소를 꺼내어 새로운 정렬 된 학생 배열 $ Sorted_students를 형성하는 데 사용됩니다.
첫 번째 등급별로 정렬하는 것과 같은 여러 기준으로 정렬해야한다고 가정하고, 성적이 동일하다면 이름의 알파벳 순서로 정렬해야한다고 가정합니다. 현재 Array_Map을 사용하여 이러한 조건을 처리 한 다음 Array 및 Array_MultiSort를 결합하여 복잡한 정렬을 완료 할 수 있습니다.
<span><span><span class="hljs-variable">$students</span></span><span> = [
[</span><span><span class="hljs-string">"name"</span></span><span> => </span><span><span class="hljs-string">"Alice"</span></span><span>, </span><span><span class="hljs-string">"score"</span></span><span> => </span><span><span class="hljs-number">90</span></span><span>],
[</span><span><span class="hljs-string">"name"</span></span><span> => </span><span><span class="hljs-string">"Bob"</span></span><span>, </span><span><span class="hljs-string">"score"</span></span><span> => </span><span><span class="hljs-number">75</span></span><span>],
[</span><span><span class="hljs-string">"name"</span></span><span> => </span><span><span class="hljs-string">"Charlie"</span></span><span>, </span><span><span class="hljs-string">"score"</span></span><span> => </span><span><span class="hljs-number">90</span></span><span>],
[</span><span><span class="hljs-string">"name"</span></span><span> => </span><span><span class="hljs-string">"David"</span></span><span>, </span><span><span class="hljs-string">"score"</span></span><span> => </span><span><span class="hljs-number">85</span></span><span>]
];
</span><span><span class="hljs-comment">// 추출 점수와 이름</span></span><span>
</span><span><span class="hljs-variable">$scores</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_map</span></span><span>(function(</span><span><span class="hljs-variable">$student</span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$student</span></span><span>[</span><span><span class="hljs-string">'score'</span></span><span>];
}, </span><span><span class="hljs-variable">$students</span></span><span>);
</span><span><span class="hljs-variable">$names</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_map</span></span><span>(function(</span><span><span class="hljs-variable">$student</span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$student</span></span><span>[</span><span><span class="hljs-string">'name'</span></span><span>];
}, </span><span><span class="hljs-variable">$students</span></span><span>);
</span><span><span class="hljs-comment">// 등급의 내림차순으로 정렬하십시오,오름차순으로 정렬하십시오</span></span><span>
</span><span><span class="hljs-title function_ invoke__">array_multisort</span></span><span>(</span><span><span class="hljs-variable">$scores</span></span><span>, SORT_DESC, </span><span><span class="hljs-variable">$names</span></span><span>, SORT_ASC, </span><span><span class="hljs-variable">$students</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$students</span></span><span>);
</span></span>
이 예에서는 Array_multiSort를 사용하여 여러 배열을 기반으로 데이터를 정렬 할 수 있습니다. 먼저, 점수 로 내림차순으로 정렬하고 등급이 동일하다면 이름 으로 오름차순 순서로 정렬하십시오.
Arsort 와 Array_map 의 조합은 복잡한 데이터 분류를위한 강력한 기능을 제공합니다. 정렬하기 전에 Array_Map을 통해 데이터를 처리하거나 키 필드를 추출한 다음 Array_MultiSort를 통해 내림차순으로 정렬 할 수 있으며 Array_MultiSort 와 함께 다중 조건 정렬조차도 정렬 할 수 있습니다.
이러한 기능을 유연하게 사용하여 다차원 배열 및 복잡한 데이터를 처리 할 때보다 효율적이고 편리하게 정렬하여 코드의 가독성 및 실행 효율성을 향상시킬 수 있습니다.
관련 태그:
array_map