Большие числа в PHP

У меня есть fb_id 100001635692408 в моей базе данных, но когда я получаю его в своем PHP-скрипте, он печатает что-то вроде этого 1.0000163569241E+14. И как я могу получить этот номер без конвертации?


person Shark    schedule 01.08.2012    source источник
comment
string не годится? ты занимаешься математикой с этими большими числами?   -  person Marek Sebera    schedule 01.08.2012
comment
Должна использоваться строка, но я не вижу проблемы: codepad.viper-7.com/8xCOlO< /а>   -  person Lusitanian    schedule 01.08.2012
comment
Ничего не было преобразовано, это другое представление того же имени: 100 = 10 * 10 = 100 * 1 = 1 * 100 ;) Однако: я тоже рекомендую строку   -  person KingCrunch    schedule 01.08.2012
comment
Это слишком мелкое редактирование, чтобы я мог законно внести его, но слово, которое вы искали, было обращением.   -  person Matt    schedule 01.08.2012
comment
@MarekSebera: это столбец индекса в базе данных, существует множество тестов (я знаю, они не всегда представляют реальную жизнь), которые показывают значительное преимущество в скорости числового индексирования по сравнению со строками (некоторые утверждают, что в 5 раз быстрее, но я бы сказал в два раза является реалистичным). SQL постоянно выполняет операции сравнения < и >, поэтому числовые типы, как ни крути, лучше. @Shako: не конвертируй свой индекс в строки, пожалуйста... просто не надо   -  person Elias Van Ootegem    schedule 01.08.2012
comment
так вы предлагаете уникальное (и почему-то не индексированное) поле varchar? Это просто не просчитывается, ИМХО. Кроме того: первичный ключ autoincrement подходит для простых таблиц myIsam, но в сценариях, где блокировка таблиц (например, репликация, триггеры, внешние ключи и т. д.) — это кошмар, но это уже не по теме… Согласимся. не соглашаться :)   -  person Elias Van Ootegem    schedule 01.08.2012


Ответы (3)


сохранить fb_id как строковый формат в базе данных.

person Atul Rai    schedule 01.08.2012

Вы должны использовать number_format().

number_format($myNum, 0, "");

Это отобразит ваш номер без запятых (третий параметр — разделитель) или десятичных знаков (для этого предназначен второй параметр).

person Matt    schedule 01.08.2012

Вы должны хранить идентификатор в виде строки, особенно идентификаторы Facebook, которые могут быть буквенно-цифровыми для некоторых объектов. Эти идентификаторы также могут быть больше, чем то, что некоторые машины могут хранить в виде целых чисел в какой-то момент, как это произошло со многими приложениями Twitter.

Вы также никогда не будете использовать эти данные как целое число. Вы никогда не будете добавлять идентификаторы вместе или проверять, больше ли один, чем другой. Так что int/number здесь действительно неправильный тип.

person Alex Wright    schedule 01.08.2012