Использование long int в PHP

Я пытаюсь это сделать, но я не могу хранить большую ценность

$var = rand(100000000000000,999999999999999); echo $var; // prints a 9 digit value(largest possible) 

Как получить желаемое значение?

PHP ints обычно составляет 32 бита. Другие пакеты обеспечивают более высокую точность ints: http://php.net/manual/en/language.types.integer.php

Из руководства :

Размер целого зависит от платформы, хотя максимальное значение около двух миллиардов – это обычное значение (это 32 бита). Обычно 64-битные платформы имеют максимальное значение около 9E18. PHP не поддерживает целые числа без знака. Целочисленный размер может быть определен с использованием константы PHP_INT_SIZE и максимального значения с использованием константы PHP_INT_MAX с PHP 4.4.0 и PHP 5.0.5.

Если PHP встречает число за пределами целочисленного типа, оно будет интерпретироваться как float. Кроме того, операция, которая приводит к числу за пределами целочисленного типа, вместо этого возвращает float.

BC Math и GMP – это (только?) Способ манипулировать этим ограничением.

Если вам нужно работать с очень большими числами, я нашел успех в BC Math. Вот ссылка на все, что вам нужно знать:

http://php.net/manual/en/book.bc.php

Если вы хотите сгенерировать номер и манипулировать как родной тип, вы не можете с большинством установок PHP (или у вас есть 32 или 64 бит int s и ничего больше), как уже указывали другие ответы. Однако, если вы просто генерируете число и хотите передать его вокруг возможного трюка, нужно просто конкатенировать строки:

 $var = rand(0,PHP_INT_MAX).str_pad(rand(0, 999999999), 9, 0, STR_PAD_LEFT); echo $var; 

На платформе, в которой PHP использует 32-битное целое число, это позволяет получить почти случайное целое число (в виде строки), которое превышает 32 бита (> 10 знаков после запятой). Конечно, в этой конструкции есть предвзятость, что означает, что вы не будете покрывать все числа с той же вероятностью. Пределы вызовов rand() подчиняются нормальным десятичным правилам, поэтому их просто настроить верхнюю границу нужного числа.

Если все, что вы делаете, это сохранение / передача / показ этого значения, строка будет в порядке. Равенство и большее / меньшее, чем тесты, также будут работать. Просто не делайте математики с этим.