我坐在具有en_US语言环境和这段PHP代码的机器上
setlocale(LC_ALL,'de_DE.utf8');
var_dump((string)1.234);
返回
string(5) "1.234"
而在我的具有德国语言环境的同事的机器上,它返回
string(5) "1,234"
为什么当类型转换浮动到字符串时,PHP为什么会使用语言环境?如何禁用它?我希望此功能在所有计算机上都返回string(5)“ 1.234”,而不考虑任何语言环境设置。
次要但次要的重要性:为什么PHP会忽略我机器上的setlocale?
为什么类型转换将字符串浮动到字符串时PHP为什么使用语言环境?
这就是它的行为
如何禁用它?
据我所知,你不能。
如果已安装locale,则可以将语言环境设置为en_US
。
我希望此功能在所有计算机上都返回string(5)“ 1.234”,而不考虑任何语言环境设置。
您有两个选择:
1)number_format(1.234, 3, '.', '');
2)sprintf('%.3F', 1.234);
在两种情况下,您都必须指定所需的十进制数字。
在第二种情况下,您可能没有指定它们并获得默认值6。
如果您不希望尾随零,可以trim
它们。
次要但次要的重要性:为什么PHP会忽略我机器上的setlocale?
如DevZer0所评论,您可能未安装语言环境。