я использую PHP 7.0.2
В одном месте в руководство на целых числах я увидел следующее утверждение:
Целые числа могут быть указаны в десятичном формате (основание 10), шестнадцатеричном (основание 16),
восьмеричное (основание 8) или двоичное (основание 2) обозначение, необязательно предшествующее
знак (- или +).
и в одном месте в руководстве я увидел ниже противоречивое утверждение:
PHP не поддерживает целые числа без знака.
Из-за этих двух предложений я запутался. В одном месте говорится, что целому числу может предшествовать знак, который означает, что всякий раз, когда я использую какое-либо целое число, ему будет предшествовать знак (- или +) или нет.
И в то же время говорится, что PHP не поддерживает целые числа без знака.
Итак, говорит ли это, что всякий раз, когда я использую любое целое число без предшествующего ему знака (+ или -), не будет ли оно рассматриваться как допустимое целое число в PHP?
Это просто означает, что каждое целое число подписано, и вы не можете создавать целые числа без знака. Так что если вы хотите использовать что-то большее, чем PHP_INT_MAX
, вы должны использовать строки (или некоторые библиотеки, такие как bcmath), чтобы обойти это.
Префикс + для указания положительного целого числа является необязательным, положительные целые могут быть указаны без знака или +. Отрицательные целые числа могут быть указаны только через -.
Расширяя примеры из целочисленного гида.
$a = 123; // decimal number (123)
$a = +123; // decimal number (123)
$a = -123; // a negative decimal number (-123)
$a = 0123; // octal number (equivalent to 83 decimal)
$a = +0123; // octal number (equivalent to 83 decimal)
$a = -0123; // octal number (equivalent to -83 decimal)
$a = 0x1A; // hexadecimal number (equivalent to 26 decimal)
$a = +0x1A; // hexadecimal number (equivalent to 26 decimal)
$a = -0x1A; // hexadecimal number (equivalent to -26 decimal)
$a = 0b11111111; // binary number (equivalent to 255 decimal)
$a = +0b11111111; // binary number (equivalent to 255 decimal)
$a = -0b11111111; // binary number (equivalent to -255 decimal)