人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPの配列の並び替えについての質問です。

[0]array('商品名' => 'hogehoge','金額' => 1000)
[1]array('商品名' => 'gehogeho','金額' => 100)
[2]array('商品名' => 'aheahe','金額' => 10000)
[3]array('商品名' => 'heahea','金額' => 5000)

こんな感じで2個のデータを持つ配列が複数入っている配列があります。
これを金額順に並べるうまい方法はありますか?
asort,ksortなどもやってみましたがダメでしたし、ちょっと違う感じです。

この場合ですと、次のようになって欲しいのです。

[0]array('商品名' => 'aheahe','金額' => 10000)
[1]array('商品名' => 'heahea','金額' => 5000)
[2]array('商品名' => 'hogehoge','金額' => 1000)
[3]array('商品名' => 'gehogeho','金額' => 100)

どなたかアドバイスをお願いします。

●質問者: southgate_01
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:PHP うまい アドバイス ダメ データ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● GoldenDawn
●35ポイント
$a = array() ;
$a[0] = array('商品名' => 'hogehoge','金額' => 1000) ;
$a[1] = array('商品名' => 'gehogeho','金額' => 100) ;
$a[2] = array('商品名' => 'aheahe','金額' => 10000) ;
$a[3] = array('商品名' => 'heahea','金額' => 5000) ;

uasort($a,
 create_function(
 '$a, $b',
 'return $a["金額"] == $b["金額"] ? 0 : ($a["金額"] > $b["金額"] ? -1 : 1) ; '
 )
 ) ;

print_r($a) ;

こんな感じ?

◎質問者からの返答

コメントありがとうございます。

申し訳ありません、ちょっと書き方が高度で理解できませんでした。

array_multisort()で出来ました。


2 ● hatettyo
●50ポイント ベストアンサー

多次元配列のソートはarray_multisortという関数を使います。

昇順であればSORT_ASCです。

<?php
$hoge1 = array('name'=>'hogehoge','price'=>1000);
$hoge2 = array('name'=>'gehogeho','price'=>100);
$hoge3 = array('name'=>'aheahe','price'=>10000);
$hoge4 = array('name'=>'heahea','price'=>5000);

$list = array($hoge1,$hoge2,$hoge3,$hoge4);

$price = array();

foreach($list as $value){
$price[] = $value['price'];
}
array_multisort($price,SORT_DESC,SORT_NUMERIC, $list);
?>


◎質問者からの返答

コメントありがとうございます。

出来ました。


http://zapanet.info/phpdoc/function.array-multisort.html

こちらも参考になりましたのでメモしておきます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ