803891 ランダム
 HOME | DIARY | PROFILE 【フォローする】 【ログイン】

まんじうこわい@楽

まんじうこわい@楽

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x

PR

Keyword Search

▼キーワード検索

Calendar

Profile

hknopage

hknopage

Free Space

Category

Freepage List

2009.11.25
XML
カテゴリ: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を使うといい。らしい。
返り値の条件を色々と変えてやれば、かなり融通がききそう。
便利かも。





お気に入りの記事を「いいね!」で応援しよう

Last updated  2009.11.25 20:44:42
コメント(2) | コメントを書く



© Rakuten Group, Inc.
X