Current Location: Home> Latest Articles> Common Errors When Using the krsort Function and How to Fix Them

Common Errors When Using the krsort Function and How to Fix Them

gitbox 2025-09-12
<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> =&gt; </span><span><span class="hljs-string">'a'</span></span>, </span><span><span class="hljs-number">1</span></span> =&gt; </span><span><span class="hljs-string">'b'</span></span>, </span><span><span class="hljs-number">2</span></span> =&gt; </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>);

2. Ignoring the sorting type parameter

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> =&gt; </span><span><span class="hljs-string">'a'</span></span>, </span><span><span class="hljs-string">'2'</span></span> =&gt; </span><span><span class="hljs-string">'b'</span></span>, </span><span><span class="hljs-string">'1'</span></span> =&gt; </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> =&gt; </span><span><span class="hljs-string">'a'</span></span>, </span><span><span class="hljs-string">'2'</span></span> =&gt; </span><span><span class="hljs-string">'b'</span></span>, </span><span><span class="hljs-string">'1'</span></span> =&gt; </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>);

3. Confusing it with ksort()

Many developers accidentally write ksort() instead of krsort(). The difference is:

  • ksort(): Sorts array by keys in ascending order
  • krsort(): Sorts array by keys in descending order

Solution: Pay attention to the letter "r" in the function name (it stands for reverse).

4. Calling it on a non-array variable

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>);
}

Conclusion

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.