PHP では、小数点が画面に出力されるとき (または文字列にキャストされるとき)、小数点記号もコンマに変換されることがわかりました。しかし、それはなぜですか?これに関するドキュメントは見つかりませんでした。また、文字列へのキャストで国際化設定が考慮されているとは思いません。
コード例:
$var = 12.345;
var_dump($var); // Outputs: double(12.345)
var_dump((string)$var); // Outputs: string(6) "12,345"
var_dump(str_replace(',', '.', $var)); // Outputs: string(6) "12.345"
echo $var; // Outputs: 12,345
この動作の原因は何ですか?
この質問は PHP < 8 に適用されます。ドキュメントによると、
PHP 8.0.0 以降、小数点文字は常に
.
です。PHP 8.0.0 より前では、小数点文字はスクリプトのロケール (カテゴリ LC_NUMERIC) で定義されていました。setlocale() 関数を参照してください。