重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

2次元配列のデータをソートしたいのですが方法がわかりません。初歩的な質問ですが、ご存知の方、よろしくお願いいたします。

(例)
商品コード、商品名、金額、有効期限のデータを以下のように持っています。
$data[0] = ("001", "商品A", 5200, "2004/5");
$data[1] = ("002", "商品B", 350, "2005/1");
$data[2] = ("003", "商品C", 10800, "2004/3");
・・・・
データの項目(商品コード、商品名など)数は固定ですが、データ数、内容は変化します。

2次元配列でデータがあり、商品コードで降順にソート、金額で昇順にソートなどのソートを行う方法はありますか?

No.760468 で同じような質問があり、array_multisort
が回答としてあがっていましたが、上記データの場合ソートできないようなので質問させていただきました。
なお、環境によりデータベースを使用することはできません。

A 回答 (2件)

例えば、金額での昇順ソート



$data_max = 1000 ; //データの個数
$s = 2 ; // 3番目の金額なので

for ($i=0 ;$i<$data_max ;$i++){
  $sort[$i] = $i ;
}
for ($i=0 ;$i<$data_max-1 ;$i++){
for ($j=0 ;$j<$data_max ;$j++){
if ( $data[$sort[$i]][$s] > $data[$sort[$j]][$s] ){
// このifの判定をいじれば昇順降順などを操作できます
$k = $sort[$i] ;
$sort[$i] = $sort[$j] ;
$sort[$j] = $k ;
}
print "$data[sort[$i]][0] $data[sort[$i]][1] $data[sort[$i]][2] $data[sort[$i]][3]\n" ;
}
    • good
    • 0
この回答へのお礼

お礼が遅くなって済みませんでした。
回答ありがとうございます。
2次元配列をソートする関数のようなものはないのですね。
回答いただいたロジックを用いてソートができるようになりました。
アルゴリズムはあまり理解していなかったので、これを機に勉強したいと思います。
ありがとうございました。

お礼日時:2004/02/13 21:02

まず基本的なアルゴリズムとかを覚えたほうが良いと思いますよ。


ソートは
クイックソート
バブルソート
などが有名なアルゴリズムですね。
これらを踏まえて、PHPに置き換えれば良いですね。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!