
配列のソート方法の仕方がわからず調べているのですが、なかなかできず困っております。
どなたかご教授お願いいたします。
array(5) {
[0]=> array(3) {
["id"]=> string(1) "1"
["size"]=> string(5) "100"
["message"]=> string(7) "テスト1"
}
[1]=> array(3) {
["id"]=> string(1) "2"
["size"]=> string(5) "200"
["message"]=> string(7) "テスト2"
}
[2]=> array(3) {
["id"]=> string(1) "3"
["size"]=> string(5) "300"
["message"]=> string(7) "テスト3"
}
[3]=> array(3) {
["id"]=> string(1) "4"
["size"]=> string(5) "400"
["message"]=> string(7) "テスト4"
}
[4]=> array(3) {
["id"]=> string(1) "5"
["size"]=> string(4) "500"
["message"]=> string(7) "テスト5"
}
[5]=> array(3) {
["id"]=> string(1) "6"
["size"]=> string(5) "600"
["message"]=> string(7) "テスト6"
}
}
foreach ($data as $key => $val) {
・
・
・
}
となっております。foreachでループさせたときにidの降順?(1→6に表示)になるのですが、sortで昇順?(6→1に表示)にしたいです。
お分かりの方がいらっしゃいましたらお願いいたします。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
他の方の回答に対して補足します。
>>idはなるべくならstringよりintで持った方がいいですよ
そうですね。
stringを採用するメリットがあるのは、32ビットシステムで非常に大きな整数を扱う必要があるときぐらいです。
intを採用する場合はintval関数を通す必要はもちろんありません。
function func($a,$b){
if($a['id']===$b['id']) return 0;
if(intval($a['id']) < intval($b['id'])) return 1;
return -1;
}
と
function func($a,$b){
return intval($b['id']) - intval($a['id']);
}
ってどっちが一般的なんでしょうか?
個人的には後者の方がすっきりしてて好きなんですが…
この回答への補足
ご回答有難う御座います。
>そうですね。
>stringを採用するメリットがあるのは、32ビットシステムで非常に大きな整数を扱う必要があるときぐらいです。
>intを採用する場合はintval関数を通す必要はもちろんありません。
No.4の方でも回答させていただいておりますが、受け取ったデータが表記の配列になります。
ソートの方はできました。
有難う御座いました!
No.4
- 回答日時:
idはなるべくならstringよりintで持った方がいいですよ
idの性質上ユニークだとは思いますが、ダブったことも考えるとやはり
return 0も設定しておきたいところです
<?PHP
$a=array(
array("id"=> "1","size"=> "100","message"=> "テスト1")
,array("id"=> "2","size"=> "200","message"=> "テスト2")
,array("id"=> "3","size"=> "300","message"=> "テスト3")
,array("id"=> "4","size"=> "400","message"=> "テスト4")
,array("id"=> "5","size"=> "500","message"=> "テスト5")
,array("id"=> "6","size"=> "600","message"=> "テスト6")
);
function mysort($a,$b){
if($a["id"]===$b["id"]) return 0;
if(intval($a["id"]) < intval($b["id"])) return 1;
return -1;
}
usort($a,"mysort");
print_r($a);
この回答への補足
回答が遅くなり申し訳ありません。
>idはなるべくならstringよりintで持った方がいいですよ
受け取ったデータがstringなんです・・・
有難う御座いました!
No.3
- 回答日時:
>>となっております。
foreachでループさせたときにidの降順?(1→6に表示)になるのですが、sortで昇順?(6→1に表示)にしたいです。>>お分かりの方がいらっしゃいましたらお願いいたします。
すいません、ここ見落としてましたww
申し訳ないです…
>>降順?(1→6に表示) → これは昇順です
>>sortで昇順?(6→1に表示) → これは降順です
先ほどのコードはsizeで昇順ソートしてます。
idで降順ソートするならこうですかね。
http://ideone.com/liPvUD
No.2
- 回答日時:
「何で」は「どうして」じゃなくて「何をもとに」っていう意味だったんですけどww
uksortじゃなくてusortでしたね。失礼しました。
「多次元配列のキー」は親配列からすれば「キー」ではなく単なる「値」ですもんね。
http://ideone.com/J3v3ID
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CArrayのソート
-
多次元配列からxmlツリーを作成...
-
fgetc関数について
-
C言語の配列をPush(追加)する...
-
mb_encode_numericentityでタグ...
-
STLのvectorで作った配列をメン...
-
PHPのmin関数、「1」以上の数値...
-
マッチング処理(1:N)
-
foreachで上限回数指定方法また...
-
配列一致(要素順番は違うが内容...
-
プルダウンメニューにDBの内容...
-
pythonのファイルの並びでの読...
-
PHPのカッコ[ ]の使い方について
-
$_POSTを一括してサニタイズし...
-
配列をループでたくさん宣言し...
-
ネストが深い時のforeachはどう...
-
行数が30万件ほどあるCSVから、...
-
ログファイルが一定行数を超え...
-
foreachのなかで次のキーを参照...
-
配列をファイルに書き込む方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語の配列をPush(追加)する...
-
STLのvectorで作った配列をメン...
-
行列
-
CArrayのソート
-
読み(あ行~わ行)ごとに分け...
-
C言語 最大値と最小値を求めて...
-
delphi 2次元配列がわかりません
-
CArrayの要素としてCStringArra...
-
特定の文からメールアドレスの...
-
System.String.Splitでエラー
-
verilogで、配列の一部をタスク...
-
PHPで10連ガチャを作成したいの...
-
再帰関数を用いて配列の合計を...
-
cakephpでのトランザクション処...
-
mb_encode_numericentityでタグ...
-
配列を指定した順序でソート
-
多次元配列をエンコードする関...
-
forとかで連番の変数を一気に格...
-
楽天市場ジャンル検索APIで順番...
-
正規表現
おすすめ情報