現在の位置: ホーム> 最新記事一覧> より複雑な選別のためにarray_multisortでkrsort関数を使用する方法は?

より複雑な選別のためにarray_multisortでkrsort関数を使用する方法は?

gitbox 2025-09-18
<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-keyword">echo</span></span><span> </span><span><span class="hljs-string">"この記事を読んでください!&lt;br&gt;"</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">date_default_timezone_set</span></span><span>(</span><span><span class="hljs-string">'Asia/Shanghai'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"現存在するの時刻:"</span></span><span> . </span><span><span class="hljs-title function_ invoke__">date</span></span><span>(</span><span><span class="hljs-string">"Y-m-d H:i:s"</span></span><span>) . </span><span><span class="hljs-string">"&lt;br&gt;"</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>

&lt;hr&gt;

</span><span><span class="hljs-meta">&lt;?php</span></span><span>
<span class="hljs-comment">/*
タイトル: 方法 krsort 関数と array_multisort より複雑なソートに使用してください?

存在する PHP 真ん中,配列ソートは一般的な操作です。krsort そして array_multisort それらは2つの強力な機能です,しかし、使用は異なります。本文意思详细说明方法它们組み合わせて使用​​します,より複雑な選別要件を達成するため。
*/</span>

<span class="hljs-comment">/*
1. krsort 導入
krsort 配列のキーに従って下降するために使用されます(大部分から小さい)。構文は次のとおりです:
krsort(array &amp;$array, int $sort_flags = SORT_REGULAR): bool

例:
*/</span>
</span><span><span class="hljs-variable">$data</span></span><span> = [
    </span><span><span class="hljs-string">'c'</span></span><span> =&gt; </span><span><span class="hljs-number">3</span></span><span>,
    </span><span><span class="hljs-string">'a'</span></span><span> =&gt; </span><span><span class="hljs-number">1</span></span><span>,
    </span><span><span class="hljs-string">'b'</span></span><span> =&gt; </span><span><span class="hljs-number">2</span></span><span>,
];
</span><span><span class="hljs-title function_ invoke__">krsort</span></span><span>(</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><span><span class="hljs-comment">// キーの降順で配置された出力配列 ['c'=&gt;3,'b'=&gt;2,'a'=&gt;1]</span></span><span>

<span class="hljs-comment">/*
2. array_multisort 導入
array_multisort 複数の配列または多次元配列をソートすることができます,複雑な選別のニーズに非常に適しています。価値だけで並べ替えることはできません,ソートオーダーを指定することもできます(昇順/降順)そして类型。
*/</span>

<span class="hljs-comment">/*
3. 意思 krsort そして array_multisort 組み合わせて使用​​します
多次元配列があるとします,需要先按键降順排列,再按某个子元素的值昇順排序,次の手順に従うことができます:
*/</span>
</span><span><span class="hljs-variable">$users</span></span><span> = [
    </span><span><span class="hljs-string">'user3'</span></span><span> =&gt; [</span><span><span class="hljs-string">'age'</span></span><span> =&gt; </span><span><span class="hljs-number">25</span></span><span>, </span><span><span class="hljs-string">'score'</span></span><span> =&gt; </span><span><span class="hljs-number">88</span></span><span>],
    </span><span><span class="hljs-string">'user1'</span></span><span> =&gt; [</span><span><span class="hljs-string">'age'</span></span><span> =&gt; </span><span><span class="hljs-number">30</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">'user2'</span></span><span> =&gt; [</span><span><span class="hljs-string">'age'</span></span><span> =&gt; </span><span><span class="hljs-number">22</span></span><span>, </span><span><span class="hljs-string">'score'</span></span><span> =&gt; </span><span><span class="hljs-number">95</span></span><span>],
];

</span><span><span class="hljs-comment">// 最初のステップ:按键降順</span></span><span>
</span><span><span class="hljs-title function_ invoke__">krsort</span></span><span>(</span><span><span class="hljs-variable">$users</span></span><span>);

</span><span><span class="hljs-comment">// ステップ2:ソートする列を抽出します</span></span><span>
</span><span><span class="hljs-variable">$ages</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_column</span></span><span>(</span><span><span class="hljs-variable">$users</span></span><span>, </span><span><span class="hljs-string">'age'</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">$users</span></span><span>, </span><span><span class="hljs-string">'score'</span></span><span>);

</span><span><span class="hljs-comment">// ステップ3:使用 array_multisort 多次元ソートを実行します</span></span><span>
</span><span><span class="hljs-title function_ invoke__">array_multisort</span></span><span>(</span><span><span class="hljs-variable">$ages</span></span><span>, SORT_ASC, </span><span><span class="hljs-variable">$scores</span></span><span>, SORT_DESC, </span><span><span class="hljs-variable">$users</span></span><span>);

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

<span class="hljs-comment">/*
結果の説明:
1. 最初のパス krsort 按键降順排列用户。
2. 次に、使用します array_multisort 对用户的年龄昇順排列,年齢が同じ場合,则按分数降順排列。
3. ついに手に入れました $users 数组既保持了按键降順的初始顺序,価値による複雑なソートを実装します。

4. ヒント
- 配列が大きいとき,最初に使用します krsort キーをソートします,もう一度使用してください array_multisort 値をソートします,明確なソートロジックを確保できます。
- array_multisort マルチコラムのソートをサポートします,使用 array_column 対応する列を抽出することが最も便利です。
- 配列が連想配列の場合,最初に忘れないでください krsort もう一度使用してください array_multisort Reindex,キー価値の不一致を避けるため。
*/</span>

<span class="hljs-comment">/*
要約します:
意思 krsort そして array_multisort 組み合わせて使用​​します,複雑な多次元配列のソート要件を実装できます。krsort 负责按键的降順排序,array_multisort その後、配列の値に対して複数の条件を実行できます、マルチタイプのソート。この組み合わせ方法は、柔軟性があり効率的です,さまざまな実用的なアプリケーションシナリオに適しています,たとえば、ユーザーデータ管理、ソートなどをレポート。
*/</span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>