[다차원 배열에서 Uksort 기능을 사용하여 정확한 키 정렬 처리를 수행하는 방법은 무엇입니까? ]]
PHP에서 배열은 매우 강력하고 유연한 데이터 구조입니다. 다차원 배열은 일반적인 응용 프로그램 시나리오 중 하나이며 종종 복잡한 데이터를 저장하는 데 사용됩니다. 그러나 여러 번 우리는 열쇠로 정렬해야 할 필요성을 만납니다. PHP는 배열을 정렬 할 수있는 다양한 함수를 제공하며, 그 중 uksort ()는 정렬 규칙을 사용자 정의 할 수있는 기능이며, 종종 키에 따라 배열을 정렬하는 데 사용됩니다. 이 기사는 uksort () 함수를 사용하여 다차원 배열에서 정확한 키 정렬을 수행하는 방법에 중점을 둡니다.
uksort () 는 사용자 정의 비교 함수를 통해 배열의 키를 정렬하는 PHP의 함수입니다. 이 기능의 기본 구문은 다음과 같습니다.
<span><span><span class="hljs-title function_ invoke__">uksort</span></span><span>(</span><span><span class="hljs-keyword">array</span></span><span> &</span><span><span class="hljs-variable">$array</span></span><span>, </span><span><span class="hljs-keyword">callable</span></span><span> </span><span><span class="hljs-variable">$cmp_function</span></span><span>): </span><span><span class="hljs-keyword">bool</span></span><span>
</span></span>
배열 : 정렬 할 배열 (키별로 정렬).
cmp_function : 배열 키를 비교하는 데 사용되는 콜백 함수. 콜백 함수는 정수를 반환하여 두 키가 정렬 된 순서를 결정해야합니다.
다차원 배열을 다룰 때 배열의 요소도 일반적으로 배열입니다. 예를 들어, 학생 정보를 기록하는 다차원 배열이 있다고 가정하고 각 학생의 정보는 이름, 연령 및 점수 등을 포함한다고 가정합니다.
<span><span><span class="hljs-variable">$students</span></span><span> = [
</span><span><span class="hljs-string">'student1'</span></span><span> => [</span><span><span class="hljs-string">'name'</span></span><span> => </span><span><span class="hljs-string">'Tom'</span></span><span>, </span><span><span class="hljs-string">'age'</span></span><span> => </span><span><span class="hljs-number">20</span></span><span>, </span><span><span class="hljs-string">'score'</span></span><span> => </span><span><span class="hljs-number">88</span></span><span>],
</span><span><span class="hljs-string">'student2'</span></span><span> => [</span><span><span class="hljs-string">'name'</span></span><span> => </span><span><span class="hljs-string">'Jerry'</span></span><span>, </span><span><span class="hljs-string">'age'</span></span><span> => </span><span><span class="hljs-number">21</span></span><span>, </span><span><span class="hljs-string">'score'</span></span><span> => </span><span><span class="hljs-number">92</span></span><span>],
</span><span><span class="hljs-string">'student3'</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">'age'</span></span><span> => </span><span><span class="hljs-number">22</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">'student4'</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">'age'</span></span><span> => </span><span><span class="hljs-number">20</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>
이러한 다차원 배열에서 우리의 목표는 특정 키 (예 : 학생의 이름, 연령 또는 점수)를 분류하는 것입니다.
다차원 배열로 키를 정렬하려면 먼저 Uksort () 를 통해 정렬 규칙을 사용자 정의하는 방법을 이해해야합니다. 일반적으로, 우리는 각 배열의 특정 항목 값으로 정렬합니다.
우리가 각 학생의 나이에 따라 분류하고 싶다고 가정하십시오. uksort ()는 외부 어레이의 키를 처리하고 내부 키를 직접 조작하지 않기 때문에 비교 함수를 통해 각 학생의 연령에 액세스하고 이에 따라 정렬해야합니다.
다음은 uksort () 함수를 사용하는 학생들의 정렬 예입니다.
<span><span><span class="hljs-variable">$students</span></span><span> = [
</span><span><span class="hljs-string">'student1'</span></span><span> => [</span><span><span class="hljs-string">'name'</span></span><span> => </span><span><span class="hljs-string">'Tom'</span></span><span>, </span><span><span class="hljs-string">'age'</span></span><span> => </span><span><span class="hljs-number">20</span></span><span>, </span><span><span class="hljs-string">'score'</span></span><span> => </span><span><span class="hljs-number">88</span></span><span>],
</span><span><span class="hljs-string">'student2'</span></span><span> => [</span><span><span class="hljs-string">'name'</span></span><span> => </span><span><span class="hljs-string">'Jerry'</span></span><span>, </span><span><span class="hljs-string">'age'</span></span><span> => </span><span><span class="hljs-number">21</span></span><span>, </span><span><span class="hljs-string">'score'</span></span><span> => </span><span><span class="hljs-number">92</span></span><span>],
</span><span><span class="hljs-string">'student3'</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">'age'</span></span><span> => </span><span><span class="hljs-number">22</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">'student4'</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">'age'</span></span><span> => </span><span><span class="hljs-number">20</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><span class="hljs-comment">// 사용자 정의 비교 기능</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">compare_age</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$a</span></span></span><span>, </span><span><span class="hljs-variable">$b</span></span><span>) {
</span><span><span class="hljs-keyword">global</span></span><span> </span><span><span class="hljs-variable">$students</span></span><span>;
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$students</span></span><span>[</span><span><span class="hljs-variable">$a</span></span><span>][</span><span><span class="hljs-string">'age'</span></span><span>] - </span><span><span class="hljs-variable">$students</span></span><span>[</span><span><span class="hljs-variable">$b</span></span><span>][</span><span><span class="hljs-string">'age'</span></span><span>];
}
</span><span><span class="hljs-comment">// 사용uksort학생 연령별 배열을 정렬하십시오</span></span><span>
</span><span><span class="hljs-title function_ invoke__">uksort</span></span><span>(</span><span><span class="hljs-variable">$students</span></span><span>, </span><span><span class="hljs-string">'compare_age'</span></span><span>);
</span><span><span class="hljs-comment">// 출력 정렬 결과</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>
설명하다:
사용자 정의 비교 함수 compare_age : 두 개의 매개 변수를 허용합니다 (각각 두 개의 배열 키). 이 두 열쇠를 사용하면 $ 학생 배열에서 학생의 나이에 액세스하여 비교하여 정렬 순서를 결정하기 위해 정수를 반환합니다.
UKSORT () 호출 : 우리는 Compare_age 함수를 uksort () 에 인수로 전달합니다. Uksort (). 학생 배열의 키를 연령별로 정렬합니다.
학생의 점수를 기준으로 정렬하고 싶다고 가정하면이 방법이 연령 분류와 유사하며 비교 함수에서 액세스 값을 수정하면됩니다.
<span><span><span class="hljs-comment">// 사용자 정의 비교 기능(점수별로 정렬하십시오)</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">compare_score</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$a</span></span></span><span>, </span><span><span class="hljs-variable">$b</span></span><span>) {
</span><span><span class="hljs-keyword">global</span></span><span> </span><span><span class="hljs-variable">$students</span></span><span>;
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$students</span></span><span>[</span><span><span class="hljs-variable">$a</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">$b</span></span><span>][</span><span><span class="hljs-string">'score'</span></span><span>];
}
</span><span><span class="hljs-comment">// 사용uksort분수 별 배열 정렬</span></span><span>
</span><span><span class="hljs-title function_ invoke__">uksort</span></span><span>(</span><span><span class="hljs-variable">$students</span></span><span>, </span><span><span class="hljs-string">'compare_score'</span></span><span>);
</span><span><span class="hljs-comment">// 출력 정렬 결과</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>
일부 복잡한 분류 시나리오에서는 여러 기준, 예를 들어 연령별로 첫 번째 정렬, 연령이 동일하다면 점수별로 정렬해야 할 수도 있습니다. 비교 함수에서 여러 필드를 동시에 비교하여이를 달성 할 수 있습니다.
<span><span><span class="hljs-comment">// 사용자 정의 비교 기능(나이와 점수별로 정렬하십시오)</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">compare_age_and_score</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$a</span></span></span><span>, </span><span><span class="hljs-variable">$b</span></span><span>) {
</span><span><span class="hljs-keyword">global</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-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$students</span></span><span>[</span><span><span class="hljs-variable">$a</span></span><span>][</span><span><span class="hljs-string">'age'</span></span><span>] == </span><span><span class="hljs-variable">$students</span></span><span>[</span><span><span class="hljs-variable">$b</span></span><span>][</span><span><span class="hljs-string">'age'</span></span><span>]) {
</span><span><span class="hljs-comment">// 나이가 동일하다면,점수별로 정렬하십시오</span></span><span>
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$students</span></span><span>[</span><span><span class="hljs-variable">$a</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">$b</span></span><span>][</span><span><span class="hljs-string">'score'</span></span><span>];
}
</span><span><span class="hljs-comment">// 그렇지 않으면 나이별로 정렬됩니다</span></span><span>
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$students</span></span><span>[</span><span><span class="hljs-variable">$a</span></span><span>][</span><span><span class="hljs-string">'age'</span></span><span>] - </span><span><span class="hljs-variable">$students</span></span><span>[</span><span><span class="hljs-variable">$b</span></span><span>][</span><span><span class="hljs-string">'age'</span></span><span>];
}
</span><span><span class="hljs-comment">// 사용uksort복잡한 분류</span></span><span>
</span><span><span class="hljs-title function_ invoke__">uksort</span></span><span>(</span><span><span class="hljs-variable">$students</span></span><span>, </span><span><span class="hljs-string">'compare_age_and_score'</span></span><span>);
</span><span><span class="hljs-comment">// 출력 정렬 결과</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>
Uksort () 는 사용자 정의 규칙에 따라 배열 키를 정렬하는 데 도움이되는 강력한 도구입니다. 다차원 배열의 경우 일반적으로 외부 어레이의 키를 통해 내부 요소의 값에 액세스 한 다음이 값에 따라 정렬해야합니다. 단일 조건부 정렬 또는 복잡한 다중 조건 정렬이든 uksort () 는 유연한 지원을 제공합니다.
이 기사의 설명이 Uksort ()를 사용하여 다차원 배열로 키를 정렬하고 필요에 따라 유연한 조정 및 사용 방법을 이해하는 데 도움이되기를 바랍니다.