array_multisort の使用法
1. まず最も単純なケースを見てみましょう。 2 つの配列があります:
$arr1 = array(1,9,5);
$arr2 = array(6,2,4);
array_multisort($arr1,$arr2);
print_r($arr1); //取得した順序は 1,5,9
print_r($arr2); //取得した順序は 6,4,2
2 つの配列の値は最初から最後まで対応していると推定します。 1 は 6 に対応し、9 は 2 に対応し、5 は 4 に対応します。
配列をもう 1 つ追加して、何が起こるか見てみましょう:
$arr1 = array(1,9,5);
$arr2 = array(6,2,4);
$arr3 = array(3,7, 8) );
array_multisort($arr1,$arr2,$arr3);
結果を見ると、最初から最後まで1が6と3に対応しており、他の項目も同様です。この対応は、マニュアルでは「ソート中に元のキー名の関連付けを保持する」と呼ばれるものです。
また、各配列をデータベース テーブルの列として考えることもできます。対応する 1、6、3 は 1 つのデータ行であり、9、2、7 は別のデータ行です。 。 。
array_multisort は、まず最初の配列(列として想像してください)でソートし、最初の配列(列)の値が同じであれば、2番目の配列(列)でソートします。
具体的には、次のプログラムを使用してテストできます:
$arr1 = array(1,9,5,9);
$arr2 = array(6,2,4,1);
$arr3 = array( 3, 7,8,0);
array_multisort($arr1,$arr2,$arr3);
ここでの $arr3 の結果は (3,8,0,7) であると想像できます。
2. 次にarray_multisortのパラメータについて説明します。
この関数のパラメータは非常に柔軟です。最も単純なケースは、上記のように 1 または n 個の配列をパラメーターとして使用することです。各配列内の項目の数が同じである必要があることに注意してください。そうでない場合は、警告が表示されて並べ替えが失敗します。
このようにarray_multisort($arr1,$arr2,$arr3); デフォルトでは、すべての配列が昇順でソートされ、$arr2 を降順でソートして文字列として比較したい場合は、次のように記述する必要があります。
array_multisort($ arr1, $arr2, SORT_DESC, SORT_STRING, $arr3);
各配列の後にソート順序フラグまたはソート タイプ フラグを続けることができ、あるいは両方のフラグを同時に出現させることもできます。ただし、各配列の後に指定できるのは、各タイプのソート フラグ 1 つだけです。
詳細は次のとおりです:
ソート順序フラグ:
SORT_ASC - 昇順でソート(デフォルト)
SORT_DESC - 降順でソート
ソートタイプフラグ:
SORT_REGULAR - 通常の方法で項目を比較(デフォルト)
SORT_NUMERIC - 数値に従って項目を比較します
SORT_STRING - 文字列に従って項目を比較します
実際の機能: データベースからデータを抽出した後、それに従って配列したい場合は配列にすることができます。そのフィールドを最初に抽出して別の配列にし、元のデータを特定のフィールドで並べ替える目的を達成するために array_multisort を使用して並べ替えることができます。 以下は、子をスコアで並べ替える小さな例です。