Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP Undefined Constant PHP_ROUND_HALF_DOWN

I have some PHP code in a project I'm working on that uses PHP's round function. On my localhost, I don't include any quotes around my mode argument, stating it as just PHP_ROUND_HALF_DOWN. However, when pushing to my server I get the error message:

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]

Now, when I add the single quotes to the mode argument, the first error goes away, however the "wrong parameter count" remains. I'm calling the function as follows:

$days = round(($difference/$day), 0, PHP_ROUND_HALF_DOWN);

Thanks for any and all help!

like image 800
Eric Avatar asked Feb 09 '11 17:02

Eric


3 Answers

The mode argument was only added in PHP 5.3.0. If you're running an earlier version of PHP, then the mode option constants (PHP_ROUND_HALF_UP, PHP_ROUND_HALF_DOWN, PHP_ROUND_HALF_EVEN, and PHP_ROUND_HALF_ODD) won't be defined

EDIT

You can't use the mode argument for round() prior to 5.3.0, but you can achieve the equivalent by combining functions:

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
like image 79
Mark Baker Avatar answered Nov 10 '22 04:11

Mark Baker


The rounding mode was added in PHP 5.3. Make sure you're running at least that version.

You can see which version you're running by placing the following in a PHP file:

var_dump(phpversion());
like image 42
Tim Cooper Avatar answered Nov 10 '22 05:11

Tim Cooper


PHP_ROUND_HALF_DOWN requires PHP 5.3.0 as seen here: http://php.net/manual/en/math.constants.php

You're probably on a lower PHP version.

like image 5
Marwelln Avatar answered Nov 10 '22 06:11

Marwelln