Мой идентификатор базы данных больше 2147483647 (целое число), поэтому, если я получу этот идентификатор, он превратится в 2147483647, когда я преобразую свои данные в Json.
Это мой результат JSON
[
{"id":2147483647, "district_id":7171051, "name":"KARAME"},
{"id":2147483647, "district_id":7171051, "name":"KETANG BARU"},
{"id":2147483647, "district_id":7171051, "name":"WAWONASA"},
{"id":2147483647, "district_id":7171051, "name":"TERNATE BARU"},
{"id":2147483647, "district_id":7171051, "name":"TERNATE TANJUNG"},
{"id":2147483647, "district_id":7171051, "name":"KOMBOS BARAT"},
{"id":2147483647, "district_id":7171051, "name":"KOMBOS TIMUR"},
{"id":2147483647, "district_id":7171051, "name":"SINGKIL SATU"},
{"id":2147483647, "district_id":7171051, "name":"SINGKIL DUA"}
]
Мои фактические данные
[
{"id":7171051001, "district_id":7171051, "name":"KARAME"},
{"id":7171051002, "district_id":7171051, "name":"KETANG BARU"},
{"id":7171051003, "district_id":7171051, "name":"WAWONASA"},
{"id":7171051004, "district_id":7171051, "name":"TERNATE BARU"},
{"id":7171051005, "district_id":7171051, "name":"TERNATE TANJUNG"},
{"id":7171051006, "district_id":7171051, "name":"KOMBOS BARAT"},
{"id":7171051007, "district_id":7171051, "name":"KOMBOS TIMUR"},
{"id":7171051008, "district_id":7171051, "name":"SINGKIL SATU"},
{"id":7171051009, "district_id":7171051, "name":"SINGKIL DUA"}
]
Я использую Laravel 5.4
Как сделать это с моим действительным идентификатором?
Благодарю.
В PHP вы не можете иметь целое число больше, чем PHP_INT_MAX
, который в 32-битном оборудовании (или 32-битном PHP) 2147483647 = 2^31-1
это число, которое вы получаете (для справки, в 64-битном это 9223372036854775807 = 2^63-1
). И ваши исходные данные, откуда бы вы их ни получали, имеют идентификатор в виде строки (обратите внимание на кавычки вокруг них).
Итак, когда вы приводите его к целому числу, оно усекается до 2147483647
, Теперь у вас есть два варианта:
9223372036854775807
предел, который, очевидно, намного выше.Целочисленные значения более 2147483647 доступны в PHP на 64-битных платформах. Если вы используете 32-битную платформу, у вас есть ограничение на максимальное целочисленное значение.
Другая причина этой проблемы — PHP_INT_SIZE var в вашей конфигурации php (php.ini).
Джсон не имеет значения.
Вы можете прочитать больше http://php.net/manual/en/language.types.integer.php