Tre*_*ecj 8 php string locale casting
我坐在一台带有en_US语言环境和这段PHP代码的机器上
setlocale(LC_ALL,'de_DE.utf8');
var_dump((string)1.234);
Run Code Online (Sandbox Code Playgroud)
回报
string(5) "1.234"
Run Code Online (Sandbox Code Playgroud)
而在我的同事的机器上有德国语言环境,它会返回
string(5) "1,234"
Run Code Online (Sandbox Code Playgroud)
为什么PHP在使用类型转换浮点到字符串时使用语言环境?我该如何禁用它?我希望在所有机器上都能使用此函数返回字符串(5)"1.234",而不管任何语言环境设置.
其次,不太重要:为什么PHP会忽略我机器上的setlocale?
为什么 PHP 在将浮点数转换为字符串时会使用语言环境?
这就是它的行为
我怎样才能禁用它?
你不能(据我所知)。
你可以设置语言环境en_US,如果你已经现场安装。
我想让这个函数在所有机器上返回 string(5) "1.234",而不管任何语言环境设置。
您有两个选择:
1) number_format(1.234, 3, '.', '');
2) sprintf('%.3F', 1.234);
在这两种情况下,您都必须指定所需的十进制数字。
在第二种情况下,您可能不指定它们并获得默认值 6。
如果您不想要尾随零,您可以使用trim它们。
其次,不太重要:为什么 PHP 会忽略我机器上的 setlocale?
正如DevZer0评论的那样,您可能没有安装语言环境。
| 归档时间: |
|
| 查看次数: |
1578 次 |
| 最近记录: |