Intereting Posts

PHP Неопределенная константа PHP_ROUND_HALF_DOWN

У меня есть некоторый 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 () процедуру

ура