Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP版本/Docker映像之间的NumberFormatter格式不一致_Php_Docker_Alpine_Icu - Fatal编程技术网

PHP版本/Docker映像之间的NumberFormatter格式不一致

PHP版本/Docker映像之间的NumberFormatter格式不一致,php,docker,alpine,icu,Php,Docker,Alpine,Icu,我目前正在从PHP7.1升级到7.2。我们有一个停靠设置与自定义阿尔卑斯山图像。升级相当轻松,但是我们的测试套件在一件事情上失败了,这件事还不太清楚 我们在测试中运行了以下代码(为简洁起见缩写): $numberFormatter=\numberFormatter::create('en',\numberFormatter::CURRENCY); $formattedCost=$numberFormatter->FormattCurrency( 假,空 ); var_转储(格式化成本); 不过

我目前正在从PHP7.1升级到7.2。我们有一个停靠设置与自定义阿尔卑斯山图像。升级相当轻松,但是我们的测试套件在一件事情上失败了,这件事还不太清楚

我们在测试中运行了以下代码(为简洁起见缩写):

$numberFormatter=\numberFormatter::create('en',\numberFormatter::CURRENCY);
$formattedCost=$numberFormatter->FormattCurrency(
假,空
);
var_转储(格式化成本);
不过,我们在新旧图像中获得了非常不同的输出

基于
PHP:7.1.30-fpm-alpine3.10

bool(假)
基于
PHP:7.2.22-fpm-alpine3.10

字符串(6)“0.00”
.
字符是unicode货币符号字符

我检查了一些PHP在线测试人员,似乎没有一个符合这种行为。在所有PHP版本上,预期的行为应该是返回false

我想知道这是否与Intl扩展/ICU的潜在差异有关。我们的7.1映像具有以下内容:

version => 1.1.0
ICU version => 59.1
ICU Data version => 59.1
而7.2版本有这些

version => 1.1.0
ICU version => 64.2
ICU Data version => 64.2

我不知道为什么相同的Alpine OS 3.10和相同的intl扩展版本(1.1.0)会安装完全不同的ICU版本。

只需启动几个虚拟机。。。到目前为止,我已经在使用PHP7.2(ICU/data version 64.1)的Debian 9虚拟机上安装了
string(6)”·0.00“
。看起来绝对像是一个ICU版本而不是PHP版本,我有一个使用PHP7.1的Debian box,它也运行ICU64.1,这也得到了
string(6)·0.00”
。。。从技术上讲,这几乎是假的,因为你可能会得到一个实际的货币字符串。。。但它不会被认为是假的。。。似乎与文档不匹配,是吗?。。。在PHP7.1和ICU/Data version 57.1的Windows框中,我收到了一条警告(NumberFormatter::formatCurrency():数字格式化失败)和
bool(false)
-因此,在格式化之前对
false
进行类型篡改的方式似乎发生了一些变化。。。。啊,不是类型杂耍,而是
NULL
货币-在Windows框中将货币更改为
EUR
,会产生
string(7)“€*尼克斯很乐意使用
·字符