php配列の多次元ソート

いつも忘れるんだよね・・・。

#ソート関数
function FUNCSORT($hairetu) {

#多次元配列にしてソート
foreach($hairetu as $key=>$value){
$tag_set = explode(“,”, $value);
$data[] = $tag_set;
}

usort($data, “cmp”);

$HHH = array();
#多次元配列にしてソート
foreach($data as $key=>$value){
$userList = join(“,”, $value);
#末尾に追加
array_push($HHH, $userList);
}
return $HHH;
}

function cmp($a, $b){
#値3が同じなら1でソート
if ($a[3] == $b[3]) {
return ($a[1] > $b[1]) ? -1 : 1;
}
#値3で
return ($a[3] > $b[3]) ? -1 : 1;
}

あれこっちの方が良いかなぁ?

<?PHP
$ball=array(‘base’=>array(‘size’=>1,’jp’=>’野球’),’soccer’=>array(‘size’=>3,’jp’=>’サッカー’),’basket’=>array(‘size’=>4,’jp’=>’バスケット’),’volley’=>array(‘size’=>2,’jp’=>’バレー’));

foreach($ball as $key=>$row){
$size[$key] = $row[‘size’];
}

array_multisort($ball,SORT_ASC,$size);

print_r($ball);

?>

さらにマルッと引用

	引用元
	http://d.hatena.ne.jp/ryuzi_kambe/20060222/p2 
メモ :: array_multisort 自分で忘れちゃうだろうからメモPHP の array_multisort の使い方。 たとえば、こういうデータがあるとする。データは CSV を想定。 ID | PRICE | NAME ------------------- 1 | 1200 | hoge ------------------- 2 | 800 | foo ------------------- 3 | 1500 | bar ------------------- で、やりたいことは、これを price の昇順で並びかえたい。DB の場合だったら、当然 order by を使えば問題ない。が、CSV の場合は当然そうはいかない。 とりあえず、いったんこうやってファイルの中身を全部配列に入れる。 $item[] = array("id" => 1, "price" => 1200, "name" => hoge); $item[] = array("id" => 2, "price" => 800, "name" => foo); $item[] = array("id" => 3, "price" => 1500, "name" => bar); んでここから。 $price = array(); foreach ($item as $key => $val) { $price[$key] = $val['price']; } array_multisort($price, SORT_ASC, $item); これでできあがり。降順の場合はふたつめの引数に SORT_DESC 。