2011-12-30 15 views
2

やショー平均を切り上げ私はこれを持っている:PHP /切り上げマージMySQLのAVG()

$item = mysql_query("SELECT AVG(top) AS total FROM " . "$config_ccms_prefix" . "news where id='$id'"); 
while ($cms = mysql_fetch_assoc($item)) { 
      $avg = ceil(($cms[total]),0.5); 
     } 
//...... 

例:私は8に3.5または7.8への$であれば、CCMS [合計] = 3.4を切り上げする必要が か9.3から9.5までですが、9.5から10または4.5から5までのラウンドではありません。実際、可能であるかどうかはわかりません。

$ avgは私のためには機能しません!

答えて

1

あなたはこれを実行する必要があります。

$avg = ceil($cms['total']*2)/2; //result of 

結果は次のようになります。

1.5 = ceil(1.1*2)/2; //CEIL(2.2) = 3.0/2 = 1.5; 
1.5 = ceil(1.2*2)/2; //CEIL(2.4) = 3.0/2 = 1.5; 
1.5 = ceil(1.3*2)/2; //CEIL(2.6) = 3.0/2 = 1.5; 
1.5 = ceil(1.4*2)/2; //CEIL(2.8) = 3.0/2 = 1.5; 
1.5 = ceil(1.5*2)/2; //CEIL(3.0) = 3.0/2 = 1.5; 
2 = ceil(1.6*2)/2; //CEIL(3.2) = 4.0/2 = 2; 
2 = ceil(1.7*2)/2; //CEIL(3.4) = 4.0/2 = 2; 
2 = ceil(1.8*2)/2; //CEIL(3.6) = 4.0/2 = 2; 
2 = ceil(1.9*2)/2; //CEIL(3.8) = 4.0/2 = 2; 
2 = ceil(2*2)/2; //CEIL(4) = 4.0/2 = 2; 

乾杯

+0

良い1 ;-)次にMySQLでこれを行うことができます - SELECT CEILING(x * 2)/ 2; – Devart

+0

実際、数学的な操作である –

+0

便利です。おかげで数学。乾杯 –

0

また、その機能はこれが発生します役に立つ

// duplicates Excel's ceiling function 
if (!function_exists('ceiling')) { 
    function ceiling($number, $significance = 1) { 
     return (is_numeric($number) && 
      is_numeric($significance)) ? 
      (ceil($number/$significance) * $significance) : false; 
    } 
} 
$data = array(1.2, 1.1, 3.5, 3.8, 4, 0.6, 4.1); 
foreach ($data as $value) { 
    echo $value . ' | ' . ceiling($value, 0.5) . '<br/>'; 
} 

することができ

1.2 | 1.5 
1.1 | 1.5 
3.5 | 3.5 
3.8 | 4 
4 | 4 
0.6 | 1 
4.1 | 4.5