Tôi đã thực hiện một bài kiểm tra rất nhanh:
$a = array(
'id' => 152,
'another' => 'test',
'ananother' => 456,
);
$json = json_encode($a);
echo $json;
Điều này có vẻ giống như những gì bạn mô tả, nếu tôi không nhầm?
Và tôi đang nhận được như là đầu ra:
{"id":152,"another":"test","ananother":456}
Vì vậy, trong trường hợp này, các số nguyên chưa được chuyển đổi thành chuỗi.
Tuy nhiên, điều này có thể phụ thuộc vào phiên bản PHP mà chúng tôi đang sử dụng: đã có một vài lỗi liên quan đến json_encode được sửa, tùy thuộc vào phiên bản PHP ...
Thử nghiệm này đã được thực hiện với PHP 5.2.6; Tôi đang nhận được điều tương tự với PHP 5.2.9 và 5.3.0; Tôi không có phiên bản 5.2.x khác để thử nghiệm, mặc dù :-(
Phiên bản PHP nào bạn đang sử dụng? Hoặc là trường hợp thử nghiệm của bạn phức tạp hơn ví dụ bạn đã đăng?
Có lẽ một báo cáo lỗi trên http://bugs.php.net/ có thể liên quan? Chẳng hạn, Bug # 40503: json_encode chuyển đổi số nguyên không phù hợp với PHP ?
Có lẽ Bug # 38680 cũng có thể khiến bạn quan tâm, btw?