2017年09月 / 08月≪ 123456789101112131415161718192021222324252627282930≫10月

インフォメーション

FC2ブログで画像等を一括アップロードするソフトを地味に配布してます。
FC2ブログ用ファイルアップロードの最新版はこちら
(ベクター)FC2ブログ用ファイルアップロード

--.--.-- (--)

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


 |  --:--  |  スポンサー広告  |  Top↑

2012.08.17 (Fri)

PHPで独自ソート

PHPでシンプルなソートはsort()とかrsort()とか使えばいいんだけど、
連想配列やオブジェクトなんかを独自のルールでソートしたいなって時はusortとかつかう。

PHP: 配列のソート - Manual

PHP: usort - Manual

テーブルデータを連想配列やオブジェクトで複数取ったりとかした際に特定フィールドでソートしたいとかいうときに便利。

$dataをindexフィールドでソートしたい場合

/**
* $x['index']昇順
* @param array $a
* @param array $b
*/
function sort_Index($a,$b){
$v1 = intval($a['index']);
$v2 = intval($a['index']);
if($v1==$v2) return 0;
return ($v1<$v2) ? -1 : 1;
}
usort($data, 'sort_Index');


クラス内の関数使いたい場合は、array()でオブジェクト+関数名渡せばいいらしい

class MyClass{
// age昇順
function sort_Age($a,$b){
$v1 = intval($a['age']);
$v2 = intval($a['age']);
if($v1==$v2) return 0;
return ($v1<$v2) ? -1 : 1;
}
function getRows(){
$data = ...///データ取得処理
usort($data, array($this,'sort_Age'));
return $data;
}
}


PHP5.3から無名関数使えるので、出所が1か所の場合は

usort($data, function($a,$b){
$v1 = intval($a['index']);
$v2 = intval($a['index']);
if($v1==$v2) return 0;
return ($v1<$v2) ? -1 : 1;
});

さっぱりする。


 |  15:42  |  PHP  |  トラックバック(0)  |  コメント(0)  |  Top↑

Comment

コメントを投稿する

URL
コメント
パス  編集・削除するのに必要
非公開  管理者だけにコメントを表示
 

Trackback

この記事のトラックバックURL

この記事へのトラックバック

 | BLOGTOP | 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。