9

私はen_USロケールとこのPHPコードのあるマシンに座っています

setlocale(LC_ALL,'de_DE.utf8');
var_dump((string)1.234);

戻り値

string(5) "1.234"

一方、ドイツ語のロケールを持つ同僚のマシンでは、返されます

string(5) "1,234"

float を文字列に型キャストするときに、PHP がロケールを使用するのはなぜですか? どうすれば無効にできますか? ロケール設定に関係なく、すべてのマシンでこの関数が string(5) "1.234" を返すようにしたいと思います。

第二に、それほど重要ではありません: PHP が私のマシンの setlocale を無視するのはなぜですか?

4

1 に答える 1

5

float を文字列に型キャストするときに、PHP がロケールを使用するのはなぜですか?

それがその振る舞い

どうすれば無効にできますか?

できません(私の知る限り)。

localeen_USがインストールされている場合は、locale を に設定できます。

ロケール設定に関係なく、すべてのマシンでこの関数が string(5) "1.234" を返すようにしたいと思います。

次の 2 つのオプションがあります。

1)number_format(1.234, 3, '.', '');

2)sprintf('%.3F', 1.234);

どちらの場合も、必要な 10 進数の桁数を指定する必要があります。

2 番目のケースでは、それらを指定せず、デフォルト値の 6 を取得することがあります。

末尾のゼロが必要ない場合は、trimそれらを使用できます。

第二に、それほど重要ではありません: PHP が私のマシンの setlocale を無視するのはなぜですか?

DevZer0がコメントしたように、ロケールがインストールされていない可能性があります。

于 2015-01-30T12:22:47.827 に答える