php 5.6.8 中缺少 JSON_PRESERVE_ZERO_FRACTION

Missing JSON_PRESERVE_ZERO_FRACTION in php 5.6.8

我在 ubuntu 12.04 上使用 php 5.6.8,试图 json_encode($arr, JSON_PRESERVE_ZERO_FRACTION)JSON_PRESERVE_ZERO_FRACTION 未定义。我想它可能是在 php-json 1.3.7+ 中引入的,所以我尝试 sudo apt-get install --only-upgrade php5-json,它告诉我我有最新版本的 php-json

我使用 Ondřej Surý PPA 作为来源。有人知道出了什么问题吗?

编辑

我也在php没有任何申请的情况下签入了(php -a),这个常量仍然是未定义的。所以我认为这与应用程序无关。

应该在 PHP 5.6.6+ 中可用。

如果您的某些工具抱怨缺少常量,您可以添加 polyfill:

if(!defined('JSON_PRESERVE_ZERO_FRACTION'))
{
    define('JSON_PRESERVE_ZERO_FRACTION', 1024);
}

我知道这不是解决方案...只是一些节省时间的东西

function precise_round(num, decimals) {
   var t = Math.pow(10, decimals);   
   return (Math.round((num * t) + (decimals>0?1:0)*(Math.sign(num) * (10 / Math.pow(100, decimals)))) / t).toFixed(decimals);
}