<span><span><span><?php</span></span>
</span><span><span>// Pre-setup section (unrelated to article content)</span></span><span>
</span><span><span>echo</span></span> <span><span>"Welcome to this article!<br>"</span></span>;
</span><span><span class="function_ invoke__">date_default_timezone_set</span></span>(<span><span>'Asia/Shanghai'</span></span>);
</span><span><span>echo</span></span> <span><span>"Current time: "</span></span> . <span><span class="function_ invoke__">date</span></span>(<span><span>"Y-m-d H:i:s"</span></span>) . <span><span>"<br>"</span></span>;
</span><span><span>></span></span>
<p><hr></p>
<p></span><span><span><?php</span></span><br>
<span>/*<br>
Title: How to Combine the krsort Function with array_multisort for More Advanced Sorting?</p>
<p>In PHP, array sorting is a common operation. krsort and array_multisort are two powerful functions with different purposes. This article explains in detail how to combine them to achieve more advanced sorting requirements.<br>
*/</span></p>
<p><span>/*</p>
<ol>
<li>
<p>Introduction to krsort<br>
krsort is used to sort an array by key in descending order (from largest to smallest). Syntax:<br>
krsort(array &$array, int $sort_flags = SORT_REGULAR): bool</p>
</li>
</ol>
<p>Example:<br>
*/</span><br>
<span>$data</span> = [<br>
<span>'c'</span> => <span>3</span>,<br>
<span>'a'</span> => <span>1</span>,<br>
<span>'b'</span> => <span>2</span>,<br>
];<br>
<span class="function_ invoke__">krsort</span>(<span>$data</span>);<br>
<span class="function_ invoke__">print_r</span>(<span>$data</span>); <span>// Outputs array sorted by keys in descending order ['c'=>3,'b'=>2,'a'=>1]</span></p>
<p><span>/*<br>
2. Introduction to array_multisort<br>
array_multisort can sort multiple arrays or multidimensional arrays together, making it ideal for complex sorting. It can sort by values, specify sort order (ascending/descending), and type.<br>
*/</span></p>
<p><span>/*<br>
3. Combining krsort with array_multisort<br>
Suppose we have a multidimensional array and need to first sort by keys in descending order, then sort by a sub-element’s value in ascending order. Follow these steps:<br>
*/</span><br>
<span>$users</span> = [<br>
<span>'user3'</span> => [<span>'age'</span> => <span>25</span>, <span>'score'</span> => <span>88</span>],<br>
<span>'user1'</span> => [<span>'age'</span> => <span>30</span>, <span>'score'</span> => <span>92</span>],<br>
<span>'user2'</span> => [<span>'age'</span> => <span>22</span>, <span>'score'</span> => <span>95</span>],<br>
];</p>
<p><span>// Step 1: Sort by keys in descending order</span><br>
<span class="function_ invoke__">krsort</span>(<span>$users</span>);</p>
<p><span>// Step 2: Extract columns to sort</span><br>
<span>$ages</span> = <span class="function_ invoke__">array_column</span>(<span>$users</span>, <span>'age'</span>);<br>
<span>$scores</span> = <span class="function_ invoke__">array_column</span>(<span>$users</span>, <span>'score'</span>);</p>
<p><span>// Step 3: Use array_multisort for multidimensional sorting</span><br>
<span class="function_ invoke__">array_multisort</span>(<span>$ages</span>, SORT_ASC, <span>$scores</span>, SORT_DESC, <span>$users</span>);</p>
<p><span class="function_ invoke__">print_r</span>(<span>$users</span>);</p>
<p><span>/*<br>
Result explanation:</p>
<ol>
<li>
<p>First, users are sorted by keys in descending order using krsort.</p>
</li>
<li>
<p>Then, array_multisort sorts users by age in ascending order, and by score in descending order if ages are equal.</p>
</li>
<li>
<p>The final $users array preserves the initial key-descending order while achieving complex value-based sorting.</p>
</li>
<li>
<p>Tips</p>
</li>
</ol>
<ul>
<li>
<p>For large arrays, first use krsort on keys, then array_multisort on values for clear sorting logic.</p>
</li>
<li>
<p>array_multisort supports multi-column sorting; use array_column to extract the desired column.</p>
</li>
<li>
<p>For associative arrays, remember to krsort first, then reindex with array_multisort to avoid key-value mismatches.<br>
*/</span></p>
</li>
</ul>
<p data-is-last-node="" data-is-only-node=""><span>/*<br>
Summary:<br>
Combining krsort with array_multisort allows for complex multidimensional array sorting. krsort handles descending key order, while array_multisort sorts array values with multiple conditions and types. This combination is both flexible and efficient, suitable for practical applications like user data management and report sorting.<br>
*/</span><br>
<span>></span><br>
</span>