<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// This file is an example, showcasing an article about using the krsort function in PHP</span></span><span>
</span><span><span class="hljs-comment">// Code or comments unrelated to the main content are written here</span></span><span>
</span><span><span class="hljs-comment">// ------------------------------</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
<p><hr></p>
<p><h1>Common Errors When Using the krsort Function and How to Fix Them</h1></p>
<p><p>In PHP, <code></span>krsort<span>()
You will notice that the value of $sorted is a boolean (true/false), instead of the sorted array. This is because krsort() returns a boolean indicating whether the sorting was successful.
Solution: Simply use the original array directly:
</span><span><span class="hljs-variable">$arr</span></span><span> = [</span><span><span class="hljs-number">3</span></span> => </span><span><span class="hljs-string">'a'</span></span>, </span><span><span class="hljs-number">1</span></span> => </span><span><span class="hljs-string">'b'</span></span>, </span><span><span class="hljs-number">2</span></span> => </span><span><span class="hljs-string">'c'</span></span>];
</span><span><span class="hljs-title function_ invoke__">krsort</span></span>(</span><span><span class="hljs-variable">$arr</span></span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span>(</span><span><span class="hljs-variable">$arr</span></span>);
The second parameter of krsort() controls the sorting rule. By default, it is the constant SORT_REGULAR, which compares keys in the usual way. If the array keys are strings containing numbers, the results may sometimes differ from expectations.
Example:
</span><span><span class="hljs-variable">$arr</span></span> = [</span><span><span class="hljs-string">'10'</span></span> => </span><span><span class="hljs-string">'a'</span></span>, </span><span><span class="hljs-string">'2'</span></span> => </span><span><span class="hljs-string">'b'</span></span>, </span><span><span class="hljs-string">'1'</span></span> => </span><span><span class="hljs-string">'c'</span></span>];
</span><span><span class="hljs-title function_ invoke__">krsort</span></span>(</span><span><span class="hljs-variable">$arr</span></span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span>(</span><span><span class="hljs-variable">$arr</span></span>);
The output may look like the array was not sorted properly. This happens because the comparison treats numeric strings as plain strings.
Solution: Explicitly specify the sorting rule, such as SORT_NUMERIC:
</span><span><span class="hljs-variable">$arr</span></span> = [</span><span><span class="hljs-string">'10'</span></span> => </span><span><span class="hljs-string">'a'</span></span>, </span><span><span class="hljs-string">'2'</span></span> => </span><span><span class="hljs-string">'b'</span></span>, </span><span><span class="hljs-string">'1'</span></span> => </span><span><span class="hljs-string">'c'</span></span>];
</span><span><span class="hljs-title function_ invoke__">krsort</span></span>(</span><span><span class="hljs-variable">$arr</span></span>, SORT_NUMERIC);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span>(</span><span><span class="hljs-variable">$arr</span></span>);
Many developers accidentally write ksort() instead of krsort(). The difference is:
Solution: Pay attention to the letter "r" in the function name (it stands for reverse).
If you mistakenly use krsort() on a non-array variable, it will trigger an error:
</span><span><span class="hljs-variable">$var</span></span> = </span><span><span class="hljs-string">'string'</span></span>;
</span><span><span class="hljs-title function_ invoke__">krsort</span></span>(</span><span><span class="hljs-variable">$var</span></span>);
Solution: Check the variable type before calling:
</span><span><span class="hljs-keyword">if</span></span> (</span><span><span class="hljs-title function_ invoke__">is_array</span></span>(</span><span><span class="hljs-variable">$arr</span></span>)) {
</span><span><span class="hljs-title function_ invoke__">krsort</span></span>(</span><span><span class="hljs-variable">$arr</span></span>);
}
krsort() is a simple yet very practical sorting function. Understanding its behavior and avoiding common pitfalls can help us handle arrays more efficiently and accurately. In real-world development, aside from paying attention to return values and sorting types, it’s also important not to confuse it with other sorting functions, thereby reducing unnecessary debugging time.