<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// このファイルは例です,についての記事を表示します PHP 真ん中 krsort 関数の使用記事</span></span><span>
</span><span><span class="hljs-comment">// 身体に関係のないコードまたはコメントはここに書かれています</span></span><span>
</span><span><span class="hljs-comment">// ------------------------------</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
<h1>使用 krsort 機能および解決策のときに遭遇する可能性のある一般的なエラー</h1>
<p>存在する PHP 真ん中,<code></span><span><span class="hljs-title function_ invoke__">krsort</span></span><span>()$ソートされた値は、ソートされた配列ではなく、ブール型 / false)であることがわかります。その理由は、krsort()が成功したかどうかのブール値を返すためです。
解決策:元の配列を使用するだけです。
</span><span><span class="hljs-variable">$arr</span></span><span> = [</span><span><span class="hljs-number">3</span></span><span> => </span><span><span class="hljs-string">'a'</span></span><span>, </span><span><span class="hljs-number">1</span></span><span> => </span><span><span class="hljs-string">'b'</span></span><span>, </span><span><span class="hljs-number">2</span></span><span> => </span><span><span class="hljs-string">'c'</span></span><span>];
</span><span><span class="hljs-title function_ invoke__">krsort</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>);
Krsort()の2番目のパラメーターは、順序付けルールを制御できます。たとえば、デフォルトでは一定のsort_regularです。つまり、キー名は通常の方法で比較されます。配列のキー名が文字列であり、数字が含まれている場合、結果が期待と一致しない場合があります。
例:
</span><span><span class="hljs-variable">$arr</span></span><span> = [</span><span><span class="hljs-string">'10'</span></span><span> => </span><span><span class="hljs-string">'a'</span></span><span>, </span><span><span class="hljs-string">'2'</span></span><span> => </span><span><span class="hljs-string">'b'</span></span><span>, </span><span><span class="hljs-string">'1'</span></span><span> => </span><span><span class="hljs-string">'c'</span></span><span>];
</span><span><span class="hljs-title function_ invoke__">krsort</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>);
出力は、正しいソートがないと誤って想定する場合があります。これは、比較ルールが文字列形式の数字を文字列として比較するためです。
回避策: sort_numericなどの照合を明示的に指定します。
</span><span><span class="hljs-variable">$arr</span></span><span> = [</span><span><span class="hljs-string">'10'</span></span><span> => </span><span><span class="hljs-string">'a'</span></span><span>, </span><span><span class="hljs-string">'2'</span></span><span> => </span><span><span class="hljs-string">'b'</span></span><span>, </span><span><span class="hljs-string">'1'</span></span><span> => </span><span><span class="hljs-string">'c'</span></span><span>];
</span><span><span class="hljs-title function_ invoke__">krsort</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>, SORT_NUMERIC);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>);
多くの開発者は、誤ってkrsort()をコードを作成するときにksort()として書きます。 2つの違いは次のとおりです。
回避策:執筆時に関数名(逆方向、反転を表す)の「R」に注意を払ってください。
非アレイ変数でcrsort()を誤って使用すると、エラーがトリガーされます。
</span><span><span class="hljs-variable">$var</span></span><span> = </span><span><span class="hljs-string">'string'</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">krsort</span></span><span>(</span><span><span class="hljs-variable">$var</span></span><span>);
回避策:呼び出す前に可変タイプを確認してください。
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">is_array</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>)) {
</span><span><span class="hljs-title function_ invoke__">krsort</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>);
}
Krsort()は、シンプルだが非常に実用的なソート機能です。その行動特性を理解し、一般的な誤解を避けることは、配列を処理するときに、より効率的かつ正確に役立つことができます。実際の開発では、返品値とソートタイプに注意を払うことに加えて、他のソート機能との混乱を避けて、不必要なデバッグ時間を短縮することも必要です。