PHP4で動作可能なものでお願いします。
ary1 = ("りんご","果物",38);
ary2 = ("ごりら","動物",17);
ary3 = ("らっぱ","楽器",4);
ary4 = ("パイナップル","果物",2);
ary5 = ("ルビー","宝石",4);
ary6 = ("イルカ","動物",12);
上記の6つの配列を、第3要素(数値)を基準に降順にソートしたい場合、どのような方法が考えられますか。
方法が複数考えられる場合には、最も処理が速いと思われるものを教えて下さい。(余裕がありましたら、もしあればですが、複数の方法をそれぞれ記載頂けると嬉しいです。^^)
どうぞ、よろしくお願い致します。
No.2ベストアンサー
- 回答日時:
#1さんの回答とほぼ同じですが、質問の提示で配列の表現が
分かりにくいので、まとめるとこういうことです。
<?
$ary=Array(
Array("りんご","果物",38)
,Array("ごりら","動物",17)
,Array("らっぱ","楽器",4)
,Array("パイナップル","果物",2)
,Array("ルビー","宝石",4)
,Array("イルカ","動物",12)
);
usort($ary,"hoge1");
print "<pre>";
print_r($ary);
print "</pre>";
function hoge1($a,$b){
return $a[2]==$b[2]?0:($a[2]>$b[2]?1:-1);
}
?>
この回答への補足
わざわざ補足して下さり、助かります~。(笑)
そうなんです!
多次元配列として書くべきでした!
ご指摘頂き、助かります。
次に、<pre>の使用。
これも、忘れていて、あ~、それあると見やすくなるんだった~。
と、1人喜んでました。本題とは直接関係ありませんが。。(笑)
そして、最後のreturnの所で、すごい書き方だなぁ~と感心してしまいました。
ifのネストではなく、三項演算子のネスト?のような技があるんですね。(笑)
大変勉強になりました!
現在、このusort()で動作確認をしているところです!
今のところ、イイ感じに進んでいますので、完了しましたらご報告いたします!
含蓄ある回答をありがとうございました。
スクリプトが上手くいきましたので、お約束通り、ご報告致します。
このusort()を知る前は、配列の中に配列を入れるような形ではなく、
配列の中に文字列を入れて処理する方法で対処していました。
つまりですね、、、
$ary=Array(
Array("りんご","果物",38)
,Array("ごりら","動物",17)
,Array("らっぱ","楽器",4)
,Array("パイナップル","果物",2)
,Array("ルビー","宝石",4)
,Array("イルカ","動物",12)
);
これは、次のような書き方になります。
$ary=Array(
"@@38@@りんご果物"
,"@@17@@ごりら動物")
,"@@4@@らっぱ楽器")
,"@@2@@パイナップル果物")
,"@@4@@ルビー宝石")
,"@@12@@イルカ動物")
);
で、「@@●@@」の部分に着目して、配列の中身をnatsort();で並べ替え、、、最後に、余分な「@@」をereg_replace()で削除して、、、みたいなことをしていました。(苦笑)
配列の中に配列を入れて処理する方法を知ったとき、
今までの方法がアホらしいことに気づき、今回、このような質問に至りました。
そして、良き回答を得ることが出来ました。
皆様のおかげです。
ちなみに、microtime();にて、処理速度の比較をしてみました。
これまでの方法(@@使用):0.00922
新しい方法(usort();使用):0.006641
ちょっとだけですけど、速くなってますよね。(笑)
これで遅くなってたら泣けますからっ!
ということで、回答をそろそろ締め切らせて頂こうかと思いますw
皆様、どうもありがとうございました。
No.1
- 回答日時:
usortがおすすめ
function hoge1($a,$b){
retune $a[2]-$b[2];
}
usort($ary1,"hoge1");
このソートは呼び出す関数一つでかなり自由に設定が変えれるので、いろいろ試してみるといいですよ
詳しくはマニュアル参照
この回答への補足
御礼を言い忘れておりました。すみません。^^;
usort、これいいですね^^
早速、勉強させて頂きました!
有益な回答をありがとうございました。^^
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
phpでcookieがうまく保存されない
-
1 OR 1=1 は どんな論理(約束事...
-
フォームで戻った際に入力済み...
-
ファイルの書き込みについて教...
-
アップロードファイルを表示す...
-
htmlspecialcharsが機能してい...
-
ファイルアップロードの上限を...
-
PHPを使って、別サイトの一部を...
-
php エラー
-
PHP MySQLに画像を直接保存
-
返信機能のツリー構造の深さを...
-
ワードプレスプラグイン MW WP ...
-
重複を防ぐ記述について教えて...
-
PHPで画像の渡しが上手く行きま...
-
preg_matchで Warning: Undefin...
-
「ログイン機能を持たせる」説...
-
「teratail」での回答内容がい...
-
ページング phpの書き方がわか...
-
複数のパソコンの中の1つのパソ...
-
PHPについて。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
phpでcookieがうまく保存されない
-
PHP8を使うと、大量のWarningが...
-
PHPで画像の渡しが上手く行きま...
-
PHPSpreadsheetを使って関数を...
-
PHP一覧表示した項目にリンクを...
-
フォームで戻った際に入力済み...
-
ワードプレスプラグイン MW WP ...
-
PHPについて。
-
jpgraphで表示されない
-
$_SESSIONについて教えて下さい。
-
クラス
-
phpに関わる所での、form actio...
-
PHP ページング データベース
-
php 入力画面から確認表示画面...
-
index.phpって何ですか? 具体...
-
アコーディオンPHPが上手くいか...
-
1 OR 1=1 は どんな論理(約束事...
-
reuterの記事をbeautiful.soup....
-
phpのメールフォームの完了画面...
-
PHPSpreadsheetによる書き出し...
おすすめ情報