我有一個非常簡單的PHP問題,但我不知道如何做到這一點。在PHP中循環到最多一千,百等
根據數據庫返回的值,我想四捨五入到最大的一百或幾千。
這裏是什麼,我需要的幾個例子:
- DB返回值11,我想PHP輸出20
- DB返回值104,我想PHP輸出200
- DB返回值1404,我想PHP來輸出2000
- DB返回值10241,我想PHP輸出11000
等等等等
我想創建一個自動函數來做到這一點,根據傳遞的值。
謝謝!
我有一個非常簡單的PHP問題,但我不知道如何做到這一點。在PHP中循環到最多一千,百等
根據數據庫返回的值,我想四捨五入到最大的一百或幾千。
這裏是什麼,我需要的幾個例子:
等等等等
我想創建一個自動函數來做到這一點,根據傳遞的值。
謝謝!
最終實現,靈感來自Shaunkak's answer和SO的評論。感謝這些胸罩。 live demo
<?php
$val = 10241.67;
if($val >= 1000) {
echo ceil($val/1000) * 1000;
}
else {
$length = strlen(ceil($val));
$times = str_pad('1', $length, "0");
echo ceil($val/$times) * $times;
}
你測試過了嗎? ceil(11/1000.0)* 1000 => 1000,而不是20. –
@LeszekRepie https://eval.in/792817 –
我的意思是如果你想要10個文件夾,除以10.0然後乘以10。 –
試試這個
<?php
$input = 10241; //this will be your input
$charLength = strlen($input);
$number = [1,10,100,1000,10000,100000];
$output = ceil($input/$number[$charLength - 1]) * $number[$charLength - 1]; //same like this ceil($input/10) * 10;
?>
<?php
$value = 14;
$len = strlen($value);
$div = str_pad('1', $len, "0");
echo ceil($value/$div) * $div;
?>
upvote + 1 for str_pad。 –
謝謝!其實,我有想法把它放在你以前的答案上。 –
這裏是我的2美分:
$v = 11;
if(strlen($v)<4) {
$v = str_pad((int)(substr($v, 0, 1)+1), strlen($v), 0, STR_PAD_RIGHT);
} else {
$v = substr($v, 0, -4) . str_pad((int)(substr($v, -4, -3)+1), 4, 0, STR_PAD_RIGHT);
}
請看看接受的答案,也許這是你的解決方案: http://stackoverflow.com/questions/5150001/how-to-round-to-nearest-thousand –
DB返回值10241,我想讓PHP輸出11000那不是20000? –
http://stackoverflow.com/q/1619265/6521116 –