|
カテゴリ:PHP
--PHPメモ--
usort ある多次元配列の一部を使って、配列を並び変えたい場合がある。 例えばCSVファイルを配列に取り込んだ場合や、SQLの返り値なんかがそう。 2次元や3次元の連想配列だと、PHPで用意されているsortやasrot、ksortなどではちょっと対応できない。 そんな場合は、usortで配列の任意の要素を使って並び替えができるらしい。 ---例--- //usortで使うソート関数 function sort_desc($a,$b) { //同じなら0を返してやる if ($a['count'] == $b['count']) { return 0; } //降順の場合、aが大きかったら-1、bが大きかったら1を返す //昇順にしたい場合は逆にaが大きかったら1、bが大きかったら-1を返す return ($a['count'] > $b['count']) ? -1 : 1; } $arr = array( '1_1' => array('no'=>1,'colomun'=>1,'count'=>100) ,'1_2' => array('no'=>1,'colomun'=>2,'count'=>110) ,'2_1' => array('no'=>2,'colomun'=>1,'count'=>90) ,'2_2' => array('no'=>2,'colomun'=>2,'count'=>150) ); if (usort($arr,"sort_desc") === false) { print "sort error"; exit; } ---/例--- $arrという配列のcount要素を使って降順に並び変える。 usortはインデックスを振り直してしまうので、保持したまま並び変えたければuasortを使うといい。らしい。 返り値の条件を色々と変えてやれば、かなり融通がききそう。 便利かも。 お気に入りの記事を「いいね!」で応援しよう
[PHP] カテゴリの最新記事
|