У меня есть некоторый PHP-код в проекте, над которым я работаю, который использует функцию раунда PHP. На моем localhost я не включаю никаких кавычек вокруг аргумента mode, заявляя, что это просто PHP_ROUND_HALF_DOWN. Однако при нажатии на мой сервер появляется сообщение об ошибке:
Use of undefined constant PHP_ROUND_HALF_DOWN - assumed 'PHP_ROUND_HALF_DOWN' Warning (2): Wrong parameter count for round() [APP/views/helpers/time_left.php, line 14]
Теперь, когда я добавляю одинарные кавычки к аргументу mode, первая ошибка исчезает, однако «неправильный счетчик параметров» остается. Я вызываю функцию следующим образом:
$days = round(($difference/$day), 0, PHP_ROUND_HALF_DOWN);
Спасибо за любую помощь!
Режим округления был добавлен в PHP 5.3. Убедитесь, что вы используете хотя бы ту версию.
Вы можете посмотреть, какую версию вы используете, поместив в файл PHP следующее:
var_dump(phpversion());
Аргумент mode был добавлен только в PHP 5.3.0. Если вы используете более раннюю версию PHP, то константы параметров режима (PHP_ROUND_HALF_UP, PHP_ROUND_HALF_DOWN, PHP_ROUND_HALF_EVEN и PHP_ROUND_HALF_ODD) не будут определены
РЕДАКТИРОВАТЬ
Вы не можете использовать аргумент mode для round () до 5.3.0, но вы можете достичь эквивалента, объединив функции:
round(floor($value * 100) / 100,2); // to round down to 2dp round(floor($value * 1000) / 1000,3); // to round down to 3dp round(ceil($value * 100) / 100,2); // to round up to 2dp
PHP_ROUND_HALF_DOWN
требует PHP 5.3.0, как показано здесь: http://php.net/manual/en/math.constants.php
Вероятно, вы находитесь на более низкой версии PHP.
round () по умолчанию использует PHP_ROUND_HALF_UP, но вы можете изменить его только в PHP> = 5.3.0
Чтобы эмулировать PHP_ROUND_HALF_DOWN, я думаю, вы можете вычесть (1/10 ^ (точность + 1)) * 5 из числа перед округлением.
проще говоря;
<?php $number=20.005; $precision=2; echo round($number,$precision); //20.01 echo round($number-(1/10^($precision+1))*5,$precision); //20.00 echo round($number-0.005,2); //20.00 ?>
Какая версия PHP работает на вашем сервере? Согласно документам, только PHP 5.3 или более поддерживает константы PHP_ROUND.
PHP_ROUND_HALF_DOWN
ли PHP_ROUND_HALF_DOWN
вашей версией?
В соответствии с режимом документация не была введена до 5.3
5.3.0 The mode parameter was introduced.
Вместо этого вы можете использовать floor
(или ceil
если вы хотите пойти другим путем)
$ mode добавлен в PHP 5.3
проверьте версию php с помощью:
php -v
изменить: или использовать php phpinfo () процедуру
ура