От раунда до тысячи, сотни и т. Д. В PHP

У меня довольно простой вопрос PHP, но я не уверен, как это сделать.

Я хочу округлить до сотен или тысяч в зависимости от значения, возвращаемого базой данных.

Вот несколько примеров того, что мне нужно:

  • DB возвращает значение 11, я хочу, чтобы PHP выводил 20
  • DB возвращает значение 104, я хочу, чтобы PHP вывел 200
  • DB возвращает значение 1404, я хочу, чтобы PHP выводил 2000
  • DB возвращает значение 10241, я хочу, чтобы PHP выводил 11000

и т.д.

Я хотел бы создать автоматическую функцию для этого, в соответствии с переданным значением.

Благодаря!

Окончательная реализация , вдохновленная ответом Шаункака и комментариями SO. Спасибо за эти бюстгальтеры. живая демонстрация

<?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; } 
 <?php $value = 14; $len = strlen($value); $div = str_pad('1', $len, "0"); echo ceil($value / $div) * $div; ?> 

Вот мои 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); } 

Попробуй это

 <?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; ?>