概要
閲覧数:974
投稿日: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