PHP の配列は、データを整理して保存するための強力なデータ構造を提供します。ただし、内部配列内の特定の値に基づいて多次元配列を並べ替えるのは、困難な作業になる可能性があります。
次のデータ構造を持つ PHP ハッシュテーブルを考えてみましょう:
[ [ "type" => "suite", "name" => "A-Name" ], [ "type" => "suite", "name" => "C-Name" ], [ "type" => "suite", "name" => "B-Name" ] ]
目的は、内部配列の "name" キーに基づいてこのデータ構造を並べ替えることです。
配列の並べ替えには、さまざまな PHP 関数を使用できます。
ただし、これらの関数はいずれも、内部配列内のキーに基づく並べ替えを直接サポートしません。
この制限を克服するために、内部配列内の目的の値を比較するカスタム ソート関数を定義できます。これは、usort 関数を使用して実行できます。
<code class="php">function cmp($a, $b) { return $b['name'] - $a['name']; }</code>
この関数は、内部配列の「name」キーを比較し、最初の配列の名前がその名前より大きい場合は負の値を返します。 2 番目の配列の名前。
比較関数を定義したら、usort 関数を使用して配列を並べ替えることができます。
<code class="php">usort($mydata, "cmp");</code>
カスタム ソート関数の代替ソリューションは、ソートする値のみを含む新しい配列を作成することです。これは、ネストされたループと条件ステートメントを使用して実行できます。
<code class="php">function array_sort($array, $on, $order=SORT_ASC) { // ... return $new_array; }</code>
この関数は、並べ替える配列、並べ替えるキー、およびオプションの順序 (昇順または降順) を受け取ります。ソートされたデータを含む新しい配列を返します。
array_sort 関数は次のように使用できます:
<code class="php">$mydata = [ ['type' => 'suite', 'name' => 'A-Name'], ['type' => 'suite', 'name' => 'C-Name'], ['type' => 'suite', 'name' => 'B-Name'] ]; $sorted_data = array_sort($mydata, 'name', SORT_ASC); print_r($sorted_data);</code>
以上がPHP で内部配列の値に基づいて多次元配列を並べ替える方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。