2013-07-11 33 views
5

Tôi đang ngồi trên một máy với en_US locale và đoạn mã này PHPPHP: float miền địa phương phụ thuộc vào chuỗi đúc

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

lợi nhuận

string(5) "1.234" 

trong khi trên máy tính của đồng nghiệp của tôi trong đó có một miền địa phương của Đức, nó trả về

string(5) "1,234" 

Tại sao PHP sử dụng ngôn ngữ khi đánh máy nổi để nổi bật ngs? Làm thế nào tôi có thể vô hiệu hóa nó? Tôi muốn có chức năng này trả về chuỗi (5) "1.234" trên tất cả các máy, bất kể bất kỳ thiết lập miền địa phương nào.

Thứ hai và ít quan trọng: Tại sao PHP bỏ qua setlocale trên máy của tôi?

+0

nó không bỏ qua setlocale, bạn phải cài đặt ngôn ngữ, (không hoạt động trong cửa sổ) kiểm tra giá trị trả về của setlocale nếu FALSE của nó sau đó bạn không có ngôn ngữ. – DevZer0

+0

@ DevZer0 .. đúng, tôi đoán nó không được cài đặt trên máy của tôi ... – Treecj

+0

http://php.net/setlocale có giá trị trả về, bạn không kiểm tra nó trong mã câu hỏi của bạn để chúng tôi có thể không cho bạn biết liệu cài đặt của ngôn ngữ đã thành công hay chỉ bị bỏ qua. – hakre

Trả lời

2

Tại sao PHP sử dụng miền địa phương khi nhập mã nổi vào chuỗi?

Đó là đó là hành vi

Làm thế nào tôi có thể vô hiệu hóa nó?

Bạn không thể (theo như tôi biết).

Bạn có thể đặt ngôn ngữ thành en_US nếu bạn đã cài đặt vị trí.

Tôi muốn có chuỗi trả về hàm này (5) "1.234" trên tất cả các máy, bất kể cài đặt ngôn ngữ nào.

Bạn có hai lựa chọn:

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

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

Trong cả hai trường hợp, bạn phải xác định như thế nào có thể thập phân chữ số bạn muốn.

Trong trường hợp thứ hai bạn có thể không xác định chúng và nhận được một giá trị mặc định 6.

Nếu bạn không muốn trailing zeroes bạn có thể trim họ.

Thứ hai và ít quan trọng: Tại sao PHP bỏ qua setlocale trên máy của tôi?

DevZer0 đã nhận xét bạn có thể chưa cài đặt ngôn ngữ.

+0

Thay vì 'en_US' bạn có thể đặt ngôn ngữ thành' C' bằng 'setlocale (LC_NUMERIC, 'C')'. Điều này sẽ hoạt động trên mọi hệ thống để có được hành vi "mặc định" độc lập về ngôn ngữ. – ausi

Các vấn đề liên quan