複数のフィールド値による PHP 配列の並べ替え
PHP では複数の値を持つ配列の並べ替えは難しい場合がありますが、これを実現するにはいくつかのアプローチがあります。一般的な解決策の 1 つは、array_multisort() 関数を使用することです。
質問で提供されているような配列があるとします。
Array ([ [ 'destination' => 'Sydney', 'airlines' => 'airline_1', 'one_way_fare' => 100, 'return_fare' => 300, ], [ 'destination' => 'Sydney', 'airlines' => 'airline_2', 'one_way_fare' => 150, 'return_fare' => 350, ], [ 'destination' => 'Sydney', 'airlines' => 'airline_3', 'one_way_fare' => 180, 'return_fare' => 380, ], ] )
この配列を return_fare と one_way_fare の両方で並べ替えるには、昇順で、array_multisort() を次のように使用できます。
// Obtain a list of columns foreach ($data as $key => $row) { $return_fare[$key] = $row['return_fare']; $one_way_fare[$key] = $row['one_way_fare']; } // Sort the data with return_fare descending, one_way_fare ascending array_multisort($data, $return_fare, SORT_ASC, $one_way_fare, SORT_ASC);
これにより、 return_fare の昇順で配列し、同じ return_fare 値内で one_way_fare の昇順で並べ替えます。
もう 1 つのオプションは、array_orderby() 関数を使用することです。これは、複数の条件で並べ替えるための簡略化された構文を提供します。 :
$sorted = array_orderby($data, 'return_fare', SORT_ASC, 'one_way_fare', SORT_ASC);
ループを避けるために、array_column() を使用することもできます。 (PHP 5.5.0 以降で利用可能) 目的の列を抽出し、それらの列に対して array_multisort() を使用します:
array_multisort( array_column($data, 'return_fare'), SORT_ASC, array_column($data, 'one_way_fare'), SORT_ASC, $data );
以上がPHP 配列を複数のフィールド値で並べ替える方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。