[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)
どなたかアドバイスをお願いします。
多次元配列のソートは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); ?>
$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()で出来ました。
多次元配列のソートは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
こちらも参考になりましたのでメモしておきます。
コメントありがとうございます。
出来ました。
http://zapanet.info/phpdoc/function.array-multisort.html
こちらも参考になりましたのでメモしておきます。