현재 위치: > 최신 기사 목록> 다차원 배열 정렬에 PHP의 array_multisort () 함수를 효율적으로 사용하는 방법은 무엇입니까?

다차원 배열 정렬에 PHP의 array_multisort () 함수를 효율적으로 사용하는 방법은 무엇입니까?

gitbox 2025-09-08
<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 이 기사의 시작은 코드와 관련이 없습니다.</span></span><span>
</span><span><span class="hljs-comment">// 작가: ChatGPT</span></span><span>
</span><span><span class="hljs-comment">// 날짜: 2025-08-23</span></span><span>

</span><span><span class="hljs-comment">// ---------------------- 텍스트 분배기 ----------------------</span></span><span>

<span class="hljs-comment">/**
 * 제목: 효율적으로 사용하는 방법PHP~의array_multisort()함수는 다차원 배열을 정렬합니다?
 *
 * 다차원 배열로 작업 할 때,개발자는 종종 하나 이상의 필드를 기반으로 데이터를 정렬해야합니다.。
 * PHP内置~의 array_multisort() 函数提供了하나种高效~의方式来성취하다这하나点。
 * 단일 배열을 정렬 할뿐만 아니라,또한 여러 배열 또는 다차원 배열을 동시에 정렬 할 수도 있습니다.。
 *
 * 하나、array_multisort() ~의基本语法
 * array_multisort(array &amp;$array1, array $array2 = [], array $... = [], int $sorting_order = SORT_ASC, int $sorting_flags = SORT_REGULAR): bool
 *
 * - &amp;$array1:필요한 매개 변수,需要排序~의第하나个数组。
 * - $array2, ... :선택적 매개 변수,배열을 첨부하십시오,用于与第하나个数组保持对应关系。
 * - $sorting_order:정렬 순서,일반적으로 사용됩니다 SORT_ASC(오름차순 순서)、SORT_DESC(하강 순서)。
 * - $sorting_flags:정렬 유형,좋다 SORT_REGULAR(정상적인 비교)、SORT_NUMERIC(숫자 비교)、SORT_STRING(문자열 비교)。
 *
 * 둘、在多维数组中~의应用
 * 当我们有하나个由多维数组组成~의数据集(比좋다数据库查询结果),일반적으로 특정 키 값으로 정렬하십시오。
 *
 * 예:
 */</span>

</span><span><span class="hljs-variable">$data</span></span><span> = [
    [</span><span><span class="hljs-string">"id"</span></span><span> =&gt; </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-string">"name"</span></span><span> =&gt; </span><span><span class="hljs-string">"Alice"</span></span><span>, </span><span><span class="hljs-string">"score"</span></span><span> =&gt; </span><span><span class="hljs-number">85</span></span><span>],
    [</span><span><span class="hljs-string">"id"</span></span><span> =&gt; </span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-string">"name"</span></span><span> =&gt; </span><span><span class="hljs-string">"Bob"</span></span><span>,   </span><span><span class="hljs-string">"score"</span></span><span> =&gt; </span><span><span class="hljs-number">92</span></span><span>],
    [</span><span><span class="hljs-string">"id"</span></span><span> =&gt; </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-string">"name"</span></span><span> =&gt; </span><span><span class="hljs-string">"Cindy"</span></span><span>, </span><span><span class="hljs-string">"score"</span></span><span> =&gt; </span><span><span class="hljs-number">78</span></span><span>],
];

</span><span><span class="hljs-comment">// 提取需要排序~의列</span></span><span>
</span><span><span class="hljs-variable">$ids</span></span><span>   = </span><span><span class="hljs-title function_ invoke__">array_column</span></span><span>(</span><span><span class="hljs-variable">$data</span></span><span>, </span><span><span class="hljs-string">"id"</span></span><span>);
</span><span><span class="hljs-variable">$scores</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_column</span></span><span>(</span><span><span class="hljs-variable">$data</span></span><span>, </span><span><span class="hljs-string">"score"</span></span><span>);

</span><span><span class="hljs-comment">// 按成绩하강 순서,좋다果成绩相同按id오름차순 순서</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">$ids</span></span><span>, SORT_ASC, </span><span><span class="hljs-variable">$data</span></span><span>);

</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$data</span></span><span>);

<span class="hljs-comment">/**
 * 출력 결과:
 * Array
 * (
 *     [0] =&gt; Array
 *         (
 *             [id] =&gt; 1
 *             [name] =&gt; Bob
 *             [score] =&gt; 92
 *         )
 *
 *     [1] =&gt; Array
 *         (
 *             [id] =&gt; 3
 *             [name] =&gt; Alice
 *             [score] =&gt; 85
 *         )
 *
 *     [2] =&gt; Array
 *         (
 *             [id] =&gt; 2
 *             [name] =&gt; Cindy
 *             [score] =&gt; 78
 *         )
 * )
 *
 * 삼、팁과 예방 조치
 * 1. 사용 array_column() 헬퍼 기능은 정렬 시퀀스를 빠르게 추출 할 수 있습니다,루프를 피하십시오。
 * 2. 여러 정렬 조건을 동시에 지정할 수 있습니다.,例좋다“첫 학년,다시 누릅니다ID”。
 * 3. array_multisort() 会改变原数组~의索引,지수를 유지 해야하는 경우,먼저 통과 할 수 있습니다 uasort() 성취하다。
 * 4. 대규모 데이터를 처리 할 때,array_multisort() ~의性能要优于手工성취하다排序逻辑。
 *
 * 네、요약
 * array_multisort() 是处理多维数组排序~의利器,特别适用于需要对结果集按照多个维度进行排序~의场景。
 * 掌握其用法能够显著提升代码~의简洁度和执行效率。
 */</span>
</span></span>