PHP は配列を二つのフィールドの値でソートする [重複] 。
2023-08-22 01:11:39
質問
このような配列があります。
配列( [0] => Array( "destination" => "シドニー", "airlines" => "航空会社1", "one_way_fare"=>100です。 往復運賃=" 300 ), [2] => Array( "destination" => "シドニー".Airlines"Airlines")。 "airlines" => "航空会社2", "one_way_fare"=>150です。 往復運賃=" 350 ), [3] => Array( "destination" => "シドニー".Airlines"Airlines")。 "airlines" => "航空会社3", "one_way_fare"=>180です。 帰りの運賃 => 380 ) )
return_fare asc , one_way_fare asc でソートするにはどうしたらよいですか?
試しに array_multisort() を試してみましたが、結局データが混ざってしまいました...。
asortは1次元の配列にしか使えないので、2つ以上の値でソートしたいのですが、SQLのorder by field1 asc,field2 ascのように実現するにはどうしたらよいでしょうか?
どのように解決するのですか?
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 volume descending, edition ascending
array_multisort($data, $return_fare, SORT_ASC, $one_way_fare, SORT_ASC);
PHPのマニュアルページのコメントを見てみると
array_multisort()
のコメントを見てみると、非常に有用な
array_orderby()
という関数があり、これを使うと上記をこれだけに短縮することができます。
$sorted = array_orderby($data, 'return_fare', SORT_ASC, 'one_way_fare', SORT_ASC);
ループを避けるには
array_column()
を使用します (PHP 5.5.0 以降)。
array_multisort(array_column($data, 'return_fare'), SORT_ASC,
array_column($data, 'one_way_fare'), SORT_ASC,
$data);
関連
-
[解決済み】新しいPHPMailerはPHPMailerAutoload.phpが必要?
-
[解決済み】Xampp ローカルホスト/ダッシュボード
-
[解決済み】 libapache2-mod-php7 パッケージが見つからない。
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] 配列からArrayListを作成する
-
[解決済み] 辞書を値で並べ替えるにはどうしたらいいですか?
-
[解決済み] PHPで配列から要素を削除する
-
[解決済み】オブジェクトの配列を文字列のプロパティ値でソートする
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Fatal error: 未定義の関数 sqlsrv_connect() を呼び出した。
-
[解決済み】move_uploaded_fileは、「failed to open stream: Permission denied" というエラーが出る
-
[解決済み] PHP & MySQL: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given [重複] PHP & MySQL: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given.
-
[解決済み】SQLSTATE[42000]: 構文エラーまたはアクセス違反が発生しました。1064 SQL 構文にエラーがあります - PHP - PDO [重複]。
-
[解決済み】pdo - 非オブジェクトのメンバー関数prepare()への呼び出し【重複】。
-
[解決済み] php5パッケージのインストール候補がない (Ubuntu 16.04)
-
[解決済み】 $_SERVER['DOCUMENT_ROOT'] と $_SERVER['HTTP_HOST'] の違いについて]
-
[解決済み] [Solved] Fatal error: メンバ関数 query() の null への呼び出し。
-
[解決済み】Fatal error: mysqli_result 型のオブジェクトは使用できません [終了] 。
-
[解決済み] 多次元配列を複数の列でソートする