まず、要件について説明します。データベースには、ID、ボリューム、エディション、名前の 4 つのフィールドがあります。ボリューム + エディションに従ってクエリ結果を大きいものから小さいものに並べ替える必要があります。
array_multisort 関数については以下で説明します
array_multisort() は、複数の配列を一度に並べ替えたり、特定の次元または複数の次元に従って多次元配列を並べ替えたりするために使用できます。
関連付けられた (文字列) キー名は変更されませんが、数値キー名は再インデックスされます。
ソート順序フラグ:
SORT_ASC – 昇順でソート
SORT_DESC – 降順でソート
ソートタイプフラグ:
SORT_REGULAR – 通常の方法で項目を比較
SORT_NUMERIC – 項目を番号順で比較
SORT_STRING – 項目を文字で比較order 文字列比較
各配列の後に 2 つの同様の並べ替えフラグを指定することはできません。各配列の後に指定された並べ替えフラグは、その配列に対してのみ有効です。それ以前は、デフォルト値 SORT_ASC および SORT_REGULAR が使用されていました。
入力配列はテーブルの列として扱われ、行ごとに並べ替えられます。これは SQL の ORDER BY 句の機能と似ています。最初の配列は、ソートされるメインの配列です。配列内の行 (値) が同じであると比較された場合、次の入力配列内の対応する値のサイズに従って並べ替えられます。
この関数のパラメータ構造はやや特殊ですが、非常に柔軟です。最初のパラメータは配列である必要があります。次の各引数には、以下にリストされている配列または並べ替えフラグを指定できます。
これで、このようなデータセットができました
// 这是一组从数据库查询出来的结果 $data[] = array('volume' => 67, 'edition' => 2); $data[] = array('volume' => 86, 'edition' => 1); $data[] = array('volume' => 85, 'edition' => 6); $data[] = array('volume' => 98, 'edition' => 2); $data[] = array('volume' => 86, 'edition' => 6); $data[] = array('volume' => 67, 'edition' => 7); //我们需要先做出一个volume+edition的数组来 foreach($data as $val){ $arr[] = $val['volume'] + $val['edition']; } // 将$arr根据降序排列 // 把 $data 作为最后一个参数,以通用键排序 array_multisort($arr, SORT_DESC, $data);
このようにして、必要な関数を実現しました
php array_multisort 関数を使用してデータベース結果の複雑な並べ替えを実行する方法の詳細については、PHP を参照してください。関連記事の中国語サイト!