Предопределённые константы
Перечисленные ниже константы определены данным модулем и доступны либо в сборках PHP с поддержкой этого модуля, либо когда модуль динамически загружен во время выполнения.
Следующие константы указывают на тип ошибки, возвращённой функцией json_last_error() или хранящейся, как code в JsonException .
JSON_ERROR_NONE ( int ) Не произошло никаких ошибок. JSON_ERROR_DEPTH ( int ) Была превышена максимальная глубина стека. JSON_ERROR_STATE_MISMATCH ( int ) Неверный или повреждённый JSON. JSON_ERROR_CTRL_CHAR ( int ) Ошибка управляющих символов, вероятно, из-за неверного кодирования. JSON_ERROR_SYNTAX ( int ) Синтаксическая ошибка. JSON_ERROR_UTF8 ( int ) Повреждённые символы UTF-8, вероятно, из-за неверного кодирования. JSON_ERROR_RECURSION ( int ) Объект или массив, переданный в функцию json_encode() включает рекурсивные ссылки и не может быть закодирован. Если была передана опция JSON_PARTIAL_OUTPUT_ON_ERROR , то на месте рекурсивных ссылок будет выведен null . JSON_ERROR_INF_OR_NAN ( int ) Значение, переданное в функцию json_encode() , включает либо NAN , либо INF . Если была указана константа JSON_PARTIAL_OUTPUT_ON_ERROR , то вместо указанных особых значений будет выведен 0 . JSON_ERROR_UNSUPPORTED_TYPE ( int ) В функцию json_encode() было передано значение неподдерживаемого типа, например, resource. Если была указана константа JSON_PARTIAL_OUTPUT_ON_ERROR , то вместо неподдерживаемого значения будет выводиться null . JSON_ERROR_INVALID_PROPERTY_NAME ( int ) В строке переданной в json_decode() был ключ, начинающийся с символа \u0000. JSON_ERROR_UTF16 ( int ) Один непарный суррогат UTF-16 в экранированной последовательности Unicode в строке JSON, переданной в json_decode() .
Можно комбинировать следующие константы для передачи в json_decode() .
JSON_BIGINT_AS_STRING ( int ) Декодирует большие целые числа в качестве исходного значения строки. JSON_OBJECT_AS_ARRAY ( int ) Преобразовывает объекты JSON в массив PHP. Эта опция может быть задана автоматически, если вызвать функцию json_decode() , указав вторым параметром значение true .
Следующие константы можно комбинировать для использования в json_encode() .
JSON_HEX_TAG ( int ) Все < и >кодируются в \u003C и \u003E. JSON_HEX_AMP ( int ) Все & кодируются в \u0026. JSON_HEX_APOS ( int ) Все символы ‘ кодируются в \u0027. JSON_HEX_QUOT ( int ) Все символы » кодируются в \u0022. JSON_FORCE_OBJECT ( int ) Выдавать объект вместо массива при использовании неассоциативного массива. Это полезно, когда принимающая программа или код ожидают объект, а массив пуст. JSON_NUMERIC_CHECK ( int ) Кодирование строк, содержащих числа, как числа. JSON_PRETTY_PRINT ( int ) Использовать пробельные символы в возвращаемых данных для их форматирования. JSON_UNESCAPED_SLASHES ( int ) Не экранировать / . JSON_UNESCAPED_UNICODE ( int ) Не кодировать многобайтовые символы Unicode (по умолчанию они кодируются как \uXXXX). JSON_PARTIAL_OUTPUT_ON_ERROR ( int ) Позволяет избежать возникновения ошибок при использовании функции json_encode. Осуществляет подстановку значений по умолчанию вместо некодируемых. JSON_PRESERVE_ZERO_FRACTION ( int ) Гарантирует, что значение типа float будет преобразовано именно в значение типа float в случае, если дробная часть равна 0. JSON_UNESCAPED_LINE_TERMINATORS ( int ) Символы конца строки не будут экранироваться, если задана константа JSON_UNESCAPED_UNICODE . Поведение будет таким же, какое оно было до PHP 7.1 без этой константы. Доступно с PHP 7.1.0.
Следующие константы можно комбинировать для использования в json_decode() и json_encode() .
JSON_INVALID_UTF8_IGNORE ( int ) Игнорировать некорректные символы UTF-8. Доступно с PHP 7.2.0. JSON_INVALID_UTF8_SUBSTITUTE ( int ) Преобразовывать некорректные символы UTF-8 в \0xfffd (Символ Юникода ‘REPLACEMENT CHARACTER’) Доступно с PHP 7.2.0. JSON_THROW_ON_ERROR ( int ) Выбрасывается исключение JsonException в случае возникновения ошибок вместо установки глобального состояния ошибки, которое может быть получено с помощью функции json_last_error() и json_last_error_msg() . Константа JSON_PARTIAL_OUTPUT_ON_ERROR имеет приоритет над JSON_THROW_ON_ERROR . Доступно с PHP 7.3.0.
is_nan
Возвращает результат проверки того, является ли переданное в параметр num значение нечислом ( NAN ) ( не числом ).
Нечисло ( NAN ) — неопределённый результат математического вычисления, бывает, например, тогда, когда передаваемые параметры выходят за пределы области входных данных функции. Квадратный корень числа (функция sqrt() ) может быть определён только для положительных чисел, передача (в функцию) отрицательного числа приведёт к состоянию нечисла ( NAN ). Другие примеры операций, возвращающих нечисло ( NAN ), — деление положительного бесконечного числа ( INF ) на другое бесконечное положительное число ( INF ) или любая операция, аргументами которой будет нечисло ( NAN ).
Замечание:
Несмотря на сказанное выше, нечисло ( NAN ) — это допустимое значение для типа float .
Предостережение
Нечисло ( NAN ) не тождественно другому нечислу ( NAN ). Соответствие числа с плавающей точкой нечислу ( NAN ) проверяют функцией is_nan() . Проверка $float === NAN не сработает.
Список параметров
Проверяемое число с плавающей точкой ( float )
Возвращаемые значения
Возвращает true , если параметр num — нечисло ( NAN ), иначе false .
Примеры
Пример #1 Пример использования is_nan()
var_dump ( $nan , is_nan ( $nan ));
?>
Результат выполнения приведённого примера:
float(NAN) bool(true)
Смотрите также
- is_finite() — Проверяет, является ли число с плавающей точкой допустимым конечным числом
- is_infinite() — Проверяет, является ли число с плавающей точкой бесконечным
User Contributed Notes 7 notes
17 years ago
nan/»not a number» is not meant to see if the data type is numeric/textual/etc..
NaN is actually a set of values which can be stored in floating-point variables, but dont actually evaluate to a proper floating point number.
The floating point system has three sections: 1 bit for the sign (+/-), an 8 bit exponent, and a 23 bit fractional part.
There are rules governing which combinations of values can be placed into each section, and some values are reserved for numbers such as infinity. This leads to certain combinations being invalid, or in other words, not a number.
8 years ago
I would use is_numeric() instead of ctype_digit() if you cannot be 100% sure what data type the string will be. Example from the docs:
$numeric_string = ’42’ ;
$integer = 42 ;
ctype_digit ( $numeric_string ); // true
ctype_digit ( $integer ); // false (ASCII 42 is the * character)
is_numeric ( $numeric_string ); // true
is_numeric ( $integer ); // true
?>
Предопределённые константы
Перечисленные ниже константы всегда доступны как часть ядра PHP.
| Константа | Значение | Описание | Доступна с версии |
|---|---|---|---|
| M_PI | 3.14159265358979323846 | число Пи | |
| M_E | 2.7182818284590452354 | число Эйлера (e) | |
| M_LOG2E | 1.4426950408889634074 | log_2 e | |
| M_LOG10E | 0.43429448190325182765 | lg e | |
| M_LN2 | 0.69314718055994530942 | ln 2 | |
| M_LN10 | 2.30258509299404568402 | ln 10 | |
| M_PI_2 | 1.57079632679489661923 | Пи/2 | |
| M_PI_4 | 0.78539816339744830962 | Пи/4 | |
| M_1_PI | 0.31830988618379067154 | 1/Пи | |
| M_2_PI | 0.63661977236758134308 | 2/Пи | |
| M_SQRTPI | 1.77245385090551602729 | sqrt(Пи) | PHP 5.2.0 |
| M_2_SQRTPI | 1.12837916709551257390 | 2/sqrt(Пи) | |
| M_SQRT2 | 1.41421356237309504880 | sqrt(2) | |
| M_SQRT3 | 1.73205080756887729352 | sqrt(3) | |
| M_SQRT1_2 | 0.70710678118654752440 | 1/sqrt(2) | |
| M_LNPI | 1.14472988584940017414 | Натуральный логарифм числа пи | |
| M_EULER | 0.57721566490153286061 | Постоянная Эйлера | |
| PHP_ROUND_HALF_UP | 1 | Округление к большему целому | |
| PHP_ROUND_HALF_DOWN | 2 | Округление к меньшему целому | |
| PHP_ROUND_HALF_EVEN | 3 | Округление к чётному числу | |
| PHP_ROUND_HALF_ODD | 4 | Округление к нечётному числу | |
| NAN | NAN (тип float) | Не является числом (Not A Number) | |
| INF | INF (тип float) | Бесконечность |
User Contributed Notes 7 notes
8 years ago
I just learnt of INF today and found out that it can be used in comparisons:
You can also take its negative:
Division by INF is allowed:
echo 1/INF; // outputs ‘0’
11 years ago
There are also the predefined PHP_INT_MAX and PHP_INT_SIZE constants, that describe the range of possible integer values.
7 years ago
Although INF can be used for comparison against normal numbers and as a directed number, and behaves as reciprocal of zero, it is not like limit INF tends to infinity. These operations do not work:
var_dump ( INF / INF ); // float(NAN)
var_dump ( INF — INF ); // float(NAN)
?>
However, it works with arc-tangent:
var_dump ( atan ( INF ) / M_PI ); // float(0.5)
var_dump ( atan2 ( INF , INF ) / M_PI ); // float(0.25)
var_dump ( atan2 ( 1 , INF ) / M_PI ); // float(0)
?>
6 years ago
From PHP 7.2.0, the PHP_FLOAT_* constants are provided to describe the properties of floating point numbers that can be stored; PHP_FLOAT_MAX, for example, is analogous to PHP_INT_MAX and represents the largest possible floating-point number.
2 years ago
are constants intended to be used as the 3rd parameter in the math function round()
6 years ago
Another observation on INF.
Division by zero results in INF:
var_dump ( 1 / 0 ); // float(INF)
?>
BUT a ‘Division by zero’ warning is issued.
3 years ago
Caution when using variables with the value NAN (or directly NAN, which would not be logical) if the value is converted in any form (integer, string or other non-float format)!
In that case, NAN is converted to 0. (e.g. as an index in an array, argument of a method that takes it as a non-float parameter, etc.). This bug has been reported several times, but is still present in the current version PHP 7.3.15.
Example 1:
$array = [0 => ‘zero’, 1 => ‘one’, 2 => ‘two’];
$index = NAN;
echo $array[$index]; // echo ‘zero’ and not as axcepted throws an exception or at least a warning ‘undefined offset NAN . ‘
Example 2:
function f((int) $p) < return $p; >
echo f(NAN); // echo 0 because the argument (NAN) has been converted to integer (0)
It would have to be checked in both cases explicitly for is_nan():
1: if(is_nan($index))
>else echo $array[$index];
>;
2: function f($p) < // without converting.
if(is_nan($p))
>else return (int)$p; // actually a correct conversion to Integer would have to be checked because the parser does not check this here.
>;
>
- Math
- Введение
- Установка и настройка
- Предопределённые константы
- Математические функции
- Copyright © 2001-2024 The PHP Group
- My PHP.net
- Contact
- Other PHP.net sites
- Privacy policy
is_infinite
Возвращает результат проверки того, является ли переданное в параметр num значение положительной ( INF ) или отрицательной бесконечностью ( -INF ).
Список параметров
Проверяемое число с плавающей точкой ( float )
Возвращаемые значения
Возвращает true , если параметр num является бесконечным положительным числом ( INF ) или отрицательным бесконечным числом ( -INF ), иначе false .
Примеры
Пример #1 Пример использования функции is_infinite()
var_dump ( $inf , is_infinite ( $inf ));
var_dump ( $negative_inf , is_infinite ( $negative_inf ));
?>Результат выполнения приведённого примера:
float(INF) bool(true) float(-INF) bool(true)
Смотрите также
- is_finite() — Проверяет, является ли число с плавающей точкой допустимым конечным числом
- is_nan() — Проверяет, является ли число с плавающей точкой нечислом
User Contributed Notes
There are no user contributed notes for this page.
- Copyright © 2001-2024 The PHP Group
- My PHP.net
- Contact
- Other PHP.net sites
- Privacy policy