概要
閲覧数:1267
投稿日:2014-01-29
更新日:2014-01-29
・値が異なったら、順位と値を更新するユーザ定義関数
・同数順位
関数名
・samerank() :
構文
・int samerank ( string $value )
引数
・第 1 引数 … 順位の基準となる値。アクセス数 など
戻値
・int $rank … 順位
注意点
・予め昇順もしくは降順ソートした上での利用が前提
・「static」を利用しているため、同様の処理が連続する場合には、再利用不可
コード
/*
* 値が異なったら、順位と値を更新する関数
* @param string $value 順位の基準となる値
* @return int $rank 順位
*/
function samerank($value)
{
static $rank = 0; //初期値(実際は最初必ず繰り上がるはずなので「1」小さい)
static $lastValue = null;
if ($lastValue !== $value) {//異なったら
$rank++; //順位を更新
$lastValue = $value; //前のレコードの値を更新
}
return $rank;
}
//単純な配列
$data = array(
5,
4,
4,
3,
2,
2,
1
);
//確認
for ($i=0; $i<count($data); $i++) {
echo "<p>" . samerank($data[$i]) . "位:{$data[$i]}</p>\n";
}結果
1位:5 2位:4 2位:4 3位:3 4位:2 4位:2 5位:1