array_multisort — 複数の配列または多次元配列を並べ替えます
説明
bool array_multisort (array ar1 [,mixed arg [,mixed ... [, array ...]]] )
array_multisort
(PHP 4, PHP 5)
戻り値 TRUE成功した場合は FALSE、失敗した場合は FALSE。
array_multisort() を使用すると、複数の配列を一度に並べ替えたり、1 つ以上の次元に従って多次元配列を並べ替えたりできます。
関連付けられた (文字列) キー名は変更されませんが、数値キー名は再インデックスされます。
入力配列はテーブルの列として扱われ、行ごとに並べ替えられます。これは SQL の ORDER BY 句の機能と似ています。最初の配列は、ソートされるメインの配列です。配列内の行 (値) が同じであると比較された場合、次の入力配列内の対応する値のサイズに従って並べ替えられます。
この関数のパラメータ構造はやや特殊ですが、非常に柔軟です。最初のパラメータは配列である必要があります。次の各パラメータは、以下にリストされている配列または並べ替えフラグにすることができます。
ソート順序フラグ:
SORT_ASC – 昇順でソート
SORT_DESC – 降順でソート
ソートタイプフラグ:
SORT_REGULAR – 通常の方法で項目を比較
SORT_NUMERIC – 項目を番号順で比較
SORT_STRING – 項目を比較降順 文字列比較によると、各配列の後に 2 つの同様の並べ替えフラグを指定することはできません。各配列の後に指定されたソート フラグは、その配列に対してのみ有効です。それ以前は、デフォルト値 SORT_ASC および SORT_REGULAR が使用されていました。
例 1. 複数の配列を並べ替える
$ar1 = array(“10”, 100, 100, “a”);
$ar2 = array(1, 3, “2”, 1 );
array_multisort($ar1, $ar2);
var_dump($ar1);
?> この例では、最初の配列には「10」、「a」が含まれます。 100、100。 2 番目の配列には 1,1,"2",3 が含まれます。 2 番目の配列内の項目の順序は、最初の配列内の対応する項目 (100 と 100) の順序とまったく同じです。
配列(4) {
[0]=> 文字列(2) "10"
[1]=> 文字列(1) "a"
[2]=> int(100)
[3] => int(100)
}
array(4) {
[0]=> int(1)
[2]=> ''
[3]=> int(3)
}
例 2. 多次元配列のソート
$ar = array (array ("10", 100, 100, "a ” )、array_multisort ($ar[0], SORT_ASC, SORT_STRING,
$ar[1], SORT_NUMERIC,
?>);この例でソートすると、最初の配列には 10、100、100、"a" (文字列として昇順でソート) が含まれ、2 番目の配列には 1、3、"2"、1 (文字列としてソート) が含まれます。数値は降順)。
例 3. 多次元配列のソート
$ar = array(
array(“10″, 11, 100, 100, “a”),
array( 1, 2, “2″ , 3, 1)
);
array_multisort($ar[0], SORT_ASC, SORT_STRING,
$ar[1], SORT_NUMERIC, SORT_DESC); この例ではソートすると、最初の配列は「10」、100、100、11、「a」になります(昇順の文字列として扱われます)。 2 番目の配列には、1、3、「2」、2、1 (降順で数値として扱われます) が含まれます。
配列(2) {
[0]=> 配列(5) {
[0]=> 文字列(2) "10"
[2]=> ; int(100)
[3]=> int(11)
[4]=> 文字列(1) "a"
}
[0]=> ; int(1)
[1]=> int(3)
[2]=> 文字列(1)
[3]=> 1)
}
}
例 4. データベース結果の並べ替え
この例では、データ配列の各セルがテーブル内の行を表します。これは、データベースに記録される典型的なデータのコレクションです。例のデータは次のとおりです:
ボリューム | エディション
67 | 1
85 | 6
67 |すべてのデータは data という名前の配列に保存されます。これは通常、mysql_fetch_assoc() などのループを通じてデータベースから取得されます。
$data[] = array('volume' => 67, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 1);
$data[] = array('ボリューム' => 85, 'エディション' => 6);
$data[] = アレイ('ボリューム' => 98, 'エディション' => 2);
$data[] = array('ボリューム' => 86, 'エディション' => 6);
$data[] = アレイ('ボリューム' => 67, 'エディション' => 7);
?>
この例では、ボリュームは降順でソートされ、エディションは昇順でソートされます。
これで行を含む配列ができましたが、array_multisort() には列を含む配列が必要なので、次のコードを使用して列を取得し、並べ替えます。
// 列のリストを取得します
foreach ($data as $key => $row) {
$volume[$key] = $row['volume'];
$edition[$] key ] = $row['edition'];
}
// データをボリュームに従って降順に、エディションに従って昇順に並べ替えます
// $data を最後のパラメータとして使用し、共通キーによって並べ替えます
array_multisort ($volume, SORT_DESC, $edition, SORT_ASC, $data);
データ収集がソートされ、結果は次のようになります:
volume edition
——-+——–
98 | 2
86 | 1
86 | 6
67 2
67 7
例 5. 大文字と小文字は区別されます。小文字。
大文字と小文字を区別しない並べ替えを実行するには、元の配列の小文字のコピーに基づいて並べ替える必要があります。
$array = array('Alpha', 'atomic', 'Beta', 'bank');
$array_ lowercase = array_map('strto lower', $array); SORT_ASC, SORT_STRING, $array);
print_r($array);
上記の例は次のように出力します:
Array
(
[0] => Alpha
[1] => atomic
[ 2] => 銀行
[3] => ベータ
)
[翻訳者注] この関数は非常に便利です。次の例をご覧ください:
例 6. ランキング
$grade = array(“score” => array(70, 95, 70.0, 60, “70″),
“name” => array(“張三”, “李思” , "Wang Wu",
"Zhao Liu", "Liu Qi"));
array_multisort($grade["score"], SORT_NUMERIC, SORT_DESC,
// スコアを数値として使用し、高い順に並べ替えます
$ Grade["name"], SORT_STRING, SORT_ASC);
// 名前を小さい順に並べ替えます
var_dump($grade);
上記の例は次のように出力します:
array(2) {
["スコア"]=>
配列(5) {
[0]=>
int(95)
文字列(2) "70"
[2]=>
float(70)
[3]=>
int(70)
[4]=>
}
["name"]=>
[0] =>
文字列(5) 「李思」
[1]=>
文字列(6) 「劉斉」
[2]=>
文字列(7) 「王呉」
[3]=> ;
string(9) “Zhang San”
[4]=>
string(8) “Zhao Liu”
}
}
この例では、成績を含む配列 $grade がスコアの高い順に並べ替えられます。 . 同じスコアを持つものは、名前の小さいものから大きいものへと並べられます。並べ替えの結果、Li Si が 95 ポイントで 1 位、Zhao Liu が 60 ポイントで 5 位にランクされました。 Zhang San、Wang Wu、Liu Qi はいずれも 70 ポイントを獲得し、ランキングは名前のアルファベット順に並べられ、Liu が 1 位、Wang が 2 位、Zhang が最後でした。区別するために、3 つの 70 ポイントはそれぞれ整数、浮動小数点数、文字列で表され、それらのソート結果はプログラム出力で明確に確認できます。
補足:
PHP言語における多次元配列のソートにおいて最も複雑なソート方法です。実際のコーディングでは PHP 関数 array_multisort() を使用して、この複雑な並べ替えを実装します。たとえば、ネストされた配列は、最初に共通キーを使用して並べ替えられ、次に別のキーに基づいて並べ替えられます。これは、SQL の ORDER BY ステートメントを使用して複数のフィールドを並べ替えるのとよく似ています。
PHP関数 asort() を値ソートを使った具体的な方法で解析する
PHP関数 arsort() の機能的特徴を詳しく解説
PHP自然言語ソートの特徴を紹介
PHP自然言語逆順の具体的な実装方法
やり方PHP 関数 usort() を使用して自動ソートの定義を実装するには
リスト J の例では、PHP 関数 array_multisort() がどのように機能するかを説明します:
1, "name" => "Boney M" => 3) 、array("id" => 2、"name" => "テイク ザット"、"評価" => 1)、array("id" => 3、"name" => "ザ キラーズ" ", "評価" => 4), array("id" => 4, "名前" => "ルサイン", "評価" => 3), ); foreach ($data as $key = > $value) { $name [$key] = $value[$key] = $value[評価] } array_multisort($rated, $name, $data); ;?> ここでは、行と列の配列が $data 配列でシミュレートされます。次に、PHP 関数 array_multisort() を使用して、最初に評価によってデータ セットを並べ替えます。次に、評価が等しい場合は名前によってデータ セットを並べ替えます。出力は次のとおりです:
コードをコピー
コードは次のとおりです:
Array ([0] => Array
(
[id] => 2
[name] => Takeその