- intval
- Parameters
- Return Values
- Changelog
- Examples
- Notes
- See Also
- User Contributed Notes 17 notes
- Преобразовать строку в число (PHP)
- Пример
- Приведение к типу (int)
- settype()
- intval()
- Быстродействие
- Категории
- Читайте также
- Комментарии
- Вход на сайт
- Социальные сети
- Манипуляции с типами
- Приведение типов
- Как преобразовать в число строку в PHP?
- Преобразование строки в число функцией intval()
- Преобразование строки в число путём приведения типов
- Преобразование строки в число с помощью settype()
intval
Returns the int value of value , using the specified base for the conversion (the default is base 10). intval() should not be used on objects, as doing so will emit an E_WARNING level error and return 1.
Parameters
The scalar value being converted to an integer
The base for the conversion
- if string includes a «0x» (or «0X») prefix, the base is taken as 16 (hex); otherwise,
- if string starts with «0», the base is taken as 8 (octal); otherwise,
- the base is taken as 10 (decimal).
Return Values
The integer value of value on success, or 0 on failure. Empty arrays return 0, non-empty arrays return 1.
The maximum value depends on the system. 32 bit systems have a maximum signed integer range of -2147483648 to 2147483647. So for example on such a system, intval(‘1000000000000’) will return 2147483647. The maximum signed integer value for 64 bit systems is 9223372036854775807.
Strings will most likely return 0 although this depends on the leftmost characters of the string. The common rules of integer casting apply.
Changelog
Version | Description |
---|---|
8.0.0 | The error level when converting from object was changed from E_NOTICE to E_WARNING . |
Examples
Example #1 intval() examples
The following examples are based on a 64 bit system.
echo intval ( 42 ); // 42
echo intval ( 4.2 ); // 4
echo intval ( ’42’ ); // 42
echo intval ( ‘+42’ ); // 42
echo intval ( ‘-42’ ); // -42
echo intval ( 042 ); // 34
echo intval ( ‘042’ ); // 42
echo intval ( 1e10 ); // 10000000000
echo intval ( ‘1e10’ ); // 10000000000
echo intval ( 0x1A ); // 26
echo intval ( ‘0x1A’ ); // 0
echo intval ( ‘0x1A’ , 0 ); // 26
echo intval ( 42000000 ); // 42000000
echo intval ( 420000000000000000000 ); // -4275113695319687168
echo intval ( ‘420000000000000000000’ ); // 9223372036854775807
echo intval ( 42 , 8 ); // 42
echo intval ( ’42’ , 8 ); // 34
echo intval (array()); // 0
echo intval (array( ‘foo’ , ‘bar’ )); // 1
echo intval ( false ); // 0
echo intval ( true ); // 1
?>?php
Notes
Note:
The base parameter has no effect unless the value parameter is a string.
See Also
- boolval() — Get the boolean value of a variable
- floatval() — Get float value of a variable
- strval() — Get string value of a variable
- settype() — Set the type of a variable
- is_numeric() — Finds whether a variable is a number or a numeric string
- Type juggling
- BCMath Arbitrary Precision Mathematics Functions
User Contributed Notes 17 notes
It seems intval is interpreting valid numeric strings differently between PHP 5.6 and 7.0 on one hand, and PHP 7.1 on the other hand.
echo intval ( ‘1e5’ );
?>
will return 1 on PHP 5.6 and PHP 7.0,
but it will return 100000 on PHP 7.1.
$n = «19.99» ;
print intval ( $n * 100 ); // prints 1998
print intval ( strval ( $n * 100 )); // prints 1999
?>
intval converts doubles to integers by truncating the fractional component of the number.
When dealing with some values, this can give odd results. Consider the following:
This will most likely print out 7, instead of the expected value of 8.
For more information, see the section on floating point numbers in the PHP manual (http://www.php.net/manual/language.types.double.php)
Also note that if you try to convert a string to an integer, the result is often 0.
However, if the leftmost character of a string looks like a valid numeric value, then PHP will keep reading the string until a character that is not valid in a number is encountered.
«101 Dalmations» will convert to 101
«$1,000,000» will convert to 0 (the 1st character is not a valid start for a number
«80,000 leagues . » will convert to 80
«1.4e98 microLenats were generated when. » will convert to 1.4e98
Also note that only decimal base numbers are recognized in strings.
«099» will convert to 99, while «0x99» will convert to 0.
One additional note on the behavior of intval. If you specify the base argument, the var argument should be a string — otherwise the base will not be applied.
print intval (77, 8); // Prints 77
print intval (’77’, 8); // Prints 63
Преобразовать строку в число (PHP)
В PHP преобразовать строку в число в PHP можно тремя способами. Функцией bool settype (mixed &var, string type) , функцией int intval(mixed var [,int base]) или приведением к типу — (int) или (integer) .
Пример
Например есть строка «123» нужно преобразовать ее в тип integer .
Приведение к типу (int)
settype()
intval()
Быстродействие
В плане быстродействия самым быстрым оказался первый способ (приведение к типу — (int)$str ), номером 2 оказался способ settype() и самым медленным оказался способ intval() .
Скорость измерялась обычным способом, строка «123» 1 миллион раз преобразовывалась в тип int .
Категории
Читайте также
- Строку в верхний регистр (PHP)
- Строку в нижний регистр (PHP)
- Как инвертировать строку (PHP)
- Как обрезать строку (PHP)
- Как обрезать строку (JavaScript)
- Первые N символов строки цифры (PHP)
- str_repeat (JavaScript)
- Разделить строку по разделителю (PHP)
- Первую букву в верхний регистр (JavaScript)
- Повторение строки (PHP)
- Определить поискового бота (PHP)
- str_pad (JavaScript)
Комментарии
Привет от кво мастера Америке
Вход на сайт
Введите данные указанные при регистрации:
Социальные сети
Вы можете быстро войти через социальные сети:
Манипуляции с типами
PHP не требует (и не поддерживает) явного типа при определении переменной; тип переменной определяется по контексту, в котором она используется. То есть, если вы присвоите значение типа string переменной $var , то $var станет строкой. Если вы затем присвоите $var целочисленное значение, она станет целым числом.
Примером автоматического преобразования типа является оператор сложения ‘+’. Если какой-либо из операндов является float , то все операнды интерпретируются как float , и результатом также будет float . В противном случае операнды будут интерпретироваться как целые числа и результат также будет целочисленным. Обратите внимание, что это НЕ меняет типы самих операндов; меняется только то, как они вычисляются и сам тип выражения.
$foo = «0» ; // $foo это строка (ASCII 48)
$foo += 2 ; // $foo теперь целое число (2)
$foo = $foo + 1.3 ; // $foo теперь число с плавающей точкой (3.3)
$foo = 5 + «10 Little Piggies» ; // $foo это целое число (15)
$foo = 5 + «10 Small Pigs» ; // $foo это целое число (15)
?>?php
Если последние два примера вам непонятны, смотрите Преобразование строк в числа.
Если вы хотите, чтобы переменная принудительно вычислялась как определенный тип, смотрите раздел приведение типов. Если вы хотите изменить тип переменной, смотрите settype() .
Если вы хотите протестировать любой из примеров, приведенных в данном разделе, вы можете использовать функцию var_dump() .
Замечание:
Поведение автоматического преобразования в массив в настоящий момент не определено.
К тому же, так как PHP поддерживает индексирование в строках аналогично смещениям элементов массивов, следующий пример будет верен для всех версий PHP:
Приведение типов
Приведение типов в PHP работает так же, как и в C: имя требуемого типа записывается в круглых скобках перед приводимой переменной.
Допускаются следующие приведения типов:
- (int), (integer) — приведение к integer
- (bool), (boolean) — приведение к boolean
- (float), (double), (real) — приведение к float
- (string) — приведение к string
- (array) — приведение к array
- (object) — приведение к object
- (unset) — приведение к NULL (PHP 5)
Приведение типа (binary) и поддержка префикса b были добавлены в PHP 5.2.1
Обратите внимание, что внутри скобок допускаются пробелы и символы табуляции, поэтому следующие примеры равносильны по своему действию:
Приведение строковых литералов и переменных к бинарным строкам:
Замечание:
Вместо использования приведения переменной к string , можно также заключить ее в двойные кавычки.
$foo = 10 ; // $foo — это целое число
$str = » $foo » ; // $str — это строка
$fst = (string) $foo ; // $fst — это тоже строка
?php
// Это напечатает «они одинаковы»
if ( $fst === $str ) echo «они одинаковы» ;
>
?>
Может быть не совсем ясно, что именно происходит при приведении между типами. Для дополнительной информации смотрите разделы:
Как преобразовать в число строку в PHP?
Очень часто нам приходится работать с числовой информацией, которая представлена в виде строк. В результате возникает необходимость в преобразования строки в число. Язык программирования PHP предлагает нам несколько возможностей для этого.
Речь идёт о специальных встроенных в PHP функциях, значительно облегчающих программисту задачу преобразования строки в число. Давайте их рассмотрим.
Преобразование строки в число функцией intval()
Представим, что у нас есть строка, включающая в себя один символ — «2». Вот, как будет выглядеть PHP-код преобразования этой строки в число с помощью встроенной функции intval() :
$stringNumberToParse = "2"; // var_dump($stringNumberToParse); // string '2' (length=1) // Convert the string to type int $parsedInt = intval($stringNumberToParse); // var_dump(is_int($parsedInt)); // boolean true // var_dump($parsedInt); // int 2 echo $parsedInt;На выходе получим 2, но уже в виде числа, а не строки.
Давайте пошагово разберём, что же произошло, и расшифруем каждую строчку кода: 1. Объявляется переменная, содержащая строку с символом «1». 2. У нас есть возможность задействовать функцию var_dump() для вывода на экран значения и типа переменной (в ознакомительных целях). 3. Переменная $stringNumberToParse передаётся в функцию intval() в виде аргумента (если речь идёт не о целых числах, используют floatval() ). 4. Функция возвращает нам число, которое мы присваиваем с помощью переменной $parsedInt.
Остаётся добавить, что вышеописанная функция работает в PHP разных версий: 4, 5, 7+.
Преобразование строки в число путём приведения типов
Возможность приведения типов есть во многих языках программирования, и PHP исключением не является. В PHP мы тоже можем поменять тип переменной, применив для этого синтаксис приведения типов: (int)$variable, (float)$variable. Посмотрим, как это выглядит в коде:
$stringNumberToParse = "2"; //var_dump($stringNumberToParse); // string '2' (length=1) // Convert the string to type int $parsedInt = (int)$stringNumberToParse; //var_dump(is_int($parsedInt)); // boolean true //var_dump($parsedInt); // int 2 echo $parsedInt;Результатом будет следующий вывод:
Итак, что тут происходит: 1. Объявляется переменная, содержащая строку 1. 2. Есть возможность задействовать функцию var_dump() для вывода на экран значения и типа переменной (в ознакомительных целях). 3. С помощью синтаксиса приведения типа для переменной устанавливается префикс (int). 4. Полученное числовое значение присваивается переменной $parsedInt.
Приведение типов можно успешно использовать и в PHP 5 и в PHP 7+.
Преобразование строки в число с помощью settype()
Также для выполнения преобразования можно использовать функцию settype() . Посмотрим, как преобразовать 3-символьную строку «555» в число:
Можно заметить, что параметр $str передается в функциею settype() по ссылке, следовательно, операцию присвоения делать не надо.
В принципе, вышеперечисленных способов вполне хватит для выполнения преобразования строки в число в PHP. Если же хотите знать больше, ждём вас на наших курсах!