Меню Рубрики

Перевод строки в число php

обычно вам не нужно это делать, так как PHP будет принуждать тип для вас в большинстве случаев. Для ситуаций, когда вы хотите явно преобразовать тип,cast это:

есть несколько способов сделать это:

приведите строки к числовым примитивным типам данных:

выполнение математических операций над строками:

на любом (слабо типизированном) языке вы всегда можете привести строку к числу, добавив к нему ноль.

однако в этом очень мало смысла, так как PHP будет делать это автоматически во время использования этой переменной, и он будет приведен к строке в любом случае во время вывода.

обратите внимание, что вы можете сохранить пунктирные числа в виде строк, потому что после литья в float он может быть изменен непредсказуемо, из-за природы чисел float.

Вы можете использовать:

или вы можете использовать:

немного грязно, но это работает.

можно использовать (int)_value_ например.

на PHP можно использовать intval(string) or floatval(string) функции для преобразования строк в числа.

вы всегда можете добавить к нему ноль!

просто небольшая заметка к ответам, которые могут быть полезны и безопаснее в некоторых случаях. Вы можете проверить, действительно ли строка содержит допустимое числовое значение, и только затем преобразовать его в числовой тип (например, если вам нужно манипулировать данными, поступающими из БД, которая преобразует ints в строки). Вы можете использовать is_numeric() а то floatval() :

Я обнаружил, что в JavaScript простой способ преобразовать строку в число, чтобы умножить его на 1. Он решает проблему конкатенации, потому что символ » + «имеет несколько применений в JavaScript, в то время как символ» * » предназначен исключительно для математического умножения.

основываясь на том, что я видел здесь относительно PHP, автоматически готов интерпретировать строку, содержащую цифры, как число (и комментарии о добавлении, так как в PHP » + » предназначен исключительно для математического добавления), этот трюк умножения отлично работает и для PHP.

я протестировал его, и он работает. Хотя в зависимости от того, как вы приобрели строку, вы можете применить к ней функцию trim() перед умножением на 1.

вот функция, которую я написал, чтобы упростить вещи для себя:

Он также возвращает сокращенные версии boolean, integer, double и real.

вызов типа с параметром parseNumeric, равным true, преобразует числовые строки перед проверкой типа.

type («5», true) вернет int

type («3.7», true) вернет float

type («500») вернет строку

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

редактировать

Если вы хотите определить, являются ли объекты функциями, добавьте этот случай к коммутатору:

Как преобразовать строку в число в PHP?

Обычно вам этого не нужно, поскольку PHP в большинстве случаев будет принуждать вас к типу. В ситуациях, когда вы хотите явно преобразовать тип, выполните его:

Есть несколько способов сделать это:

Передача строк в числовые примитивные типы данных:

Выполните математические операции над строками:

Используйте intval() или floatval() :

На любом (слабо типизированном) языке вы всегда можете указать строку в число, добавив к ней нуль.

Однако в этом очень мало смысла, поскольку PHP будет делать это автоматически во время использования этой переменной, и в любом случае он будет передан в строку во время вывода.

Обратите внимание, что вы можете захотеть сохранить точечные числа в виде строк, потому что после кастинга до плавания его можно изменить непредсказуемо из-за природы чисел с плавающей точкой.

Вы можете использовать:

Или вы можете использовать:

Немного грязно, но это работает.

Вы можете использовать (int)_value_ например.

Просто небольшое примечание к ответам, которые могут быть полезными и безопасными в некоторых случаях. Вы можете проверить, действительно ли строка содержит действительное числовое значение и только затем преобразовать его в числовой тип (например, если вам нужно манипулировать данными, поступающими из db, который преобразует ints в строки). Вы можете использовать is_numeric() а затем floatval() :

В PHP вы можете использовать функции intval(string) or floatval(string) для преобразования строк в числа.

Я обнаружил, что в JavaScript простой способ конвертировать строку в число – это умножить ее на 1. Она разрешает проблему конкатенации, потому что символ «+» имеет многократное использование в JavaScript, а символ «*» – это чисто для математического умножения.

Основываясь на том, что я видел здесь в отношении PHP, автоматически готов интерпретировать строку, содержащую цифру, в виде числа (и комментарии о добавлении, поскольку в PHP «+» используется исключительно для математического добавления), этот многократный трюк работает просто отлично для PHP тоже.

Я тестировал его, и он работает … Хотя в зависимости от того, как вы приобрели строку, вам может понадобиться применить функцию trim () к ней, прежде чем умножить на 1.

Вот что я написал для упрощения вещей для себя:

Он также возвращает сокращенные версии логических, целых, двойных и реальных.

Тип вызова с parseNumeric, установленным в true, преобразует числовые строки перед проверкой типа.

type («5», true) вернет int

type («3.7», true) вернет float

type («500») вернет строку

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

редактировать

Если вы хотите определить, являются ли объекты функциями, добавьте этот случай к коммутатору:

Вы всегда можете добавить к нему нуль!

Вы можете использовать:

Но лучшим решением является использование:

Попробуйте использовать что-то вроде этого:

вы можете преобразовать строку в число на PHP с помощью cast.

Вот функция, которая достигает того, что вы ищете. Сначала мы проверяем, можно ли понимать значение как число, если это так, мы превратим его в int и float. Если int и float одинаковы (например, 5 == 5.0), мы возвращаем значение int. Если int и float не совпадают (например, 5! = 5.3), то мы предполагаем, что вам нужна точность float и вернуть это значение. Если значение не является числовым, мы бросаем предупреждение и возвращаем значение null.

В дополнение к ответу Бойкодеву я предлагаю следующее:

Вы можете изменить тип данных следующим образом

По историческим причинам «double» возвращается в случае поплавка.

Для вашего конкретного случая вы можете просто умножить на 1, чтобы преобразовать строку в число в php. PHP автоматически обрабатывает плавающее и целое число.

PHP сделает это за вас в пределах

все предложения освобождают числовой тип, это кажется мне лучшей практикой

Перевод строки в число php

Синтаксис

Целые числа ( int ) могут быть указаны в десятичной (основание 10), шестнадцатеричной (основание 16), восьмеричной (основание 8) или двоичной (основание 2) системе счисления. Для задания отрицательных целых ( int ) используется оператор отрицания

Начиная с PHP 7.4.0, целочисленные литералы могут содержать подчеркивания ( _ ) между цифрами для лучшей читаемости литералов. Эти подчеркивания удаляются сканером PHP.

Пример #1 Целые числа

Формально структура целых чисел ( int ) соответствует PHP 7.4.0 (ранее подчеркивания не допускались):

Переполнение целых чисел

Пример #2 Переполнение целых на 32-битных системах

Пример #3 Переполнение целых на 64-битных системах

Преобразование в целое

Из булевого типа

Из чисел с плавающей точкой

Если число с плавающей точкой превышает размеры int (обычно +/- 2.15e+9 = 2^31 на 32-битных системах и +/- 9.22e+18 = 2^63 на 64-битных системах, результат будет неопределенным, так как float не имеет достаточной точности, чтобы вернуть верный результат в виде целого числа ( int ). В этом случае не будет выведено ни предупреждения, ни даже замечания!

Значения NaN и Infinity при приведении к int становятся равными нулю, вместо неопределенного значения в зависимости от платформы.

Из строк

Из NULL

Значение NULL всегда преобразуется в ноль ( 0 ).

Из других типов

Для других типов поведение преобразования в int не определено. Не полагайтесь на любое наблюдаемое поведение, так как оно может измениться без предупреждения.

User Contributed Notes 25 notes

Here are some tricks to convert from a «dotted» IP address to a LONG int, and backwards. This is very useful because accessing an IP addy in a database table is very much faster if it’s stored as a BIGINT rather than in characters.

var_dump((int) «010»); //output 10

Casting to an integer using (int) will always cast to the default base, which is 10.

Casting a string to a number this way does not take into account the many ways of formatting an integer value in PHP (leading zero for base 8, leading «0x» for base 16, leading «0b» for base 2). It will simply look at the first characters in a string and convert them to a base 10 integer. Leading zeroes will be stripped off because they have no meaning in numerical values, so you will end up with the decimal value 10 for (int)»010″.

Converting an integer value between bases using (int)010 will take into account the various ways of formatting an integer. A leading zero like in 010 means the number is in octal notation, using (int)010 will convert it to the decimal value 8 in base 10.

This is similar to how you use 0x10 to write in hexadecimal (base 16) notation. Using (int)0x10 will convert that to the base 10 decimal value 16, whereas using (int)»0x10″ will end up with the decimal value 0: since the «x» is not a numerical value, anything after that will be ignored.

If you want to interpret the string «010» as an octal value, you need to instruct PHP to do so. intval(«010», 8) will interpret the number in base 8 instead of the default base 10, and you will end up with the decimal value 8. You could also use octdec(«010») to convert the octal string to the decimal value 8. Another option is to use base_convert(«010», 8, 10) to explicitly convert the number «010» from base 8 to base 10, however this function will return the string «8» instead of the integer 8.

Casting a string to an integer follows the same the logic used by the intval function:

Returns the integer value of var, using the specified base for the conversion (the default is base 10).
intval allows specifying a different base as the second argument, whereas a straight cast operation does not, so using (int) will always treat a string as being in base 10.

php > var_export((int) «010»);
10
php > var_export(intval(«010»));
10
php > var_export(intval(«010», 8));
8