Как изменить текстовую переменную на int в PHP? - PullRequest
2 голосов
/ 05 мая 2009

У меня есть переменная, которая определяется вызовом POST из формы, в которую она вставляется в текстовое поле. Есть ли способ преобразовать эту переменную в целое число?

Из формы:

Lenght: <input name="length" value="10" type="text" id="lenght" size="2" />

Из кода php:

$length = $_POST['lenght'];
$url = substr($url, 0, $length);

Кажется, это не работает, и единственная причина, по которой я думаю, что это не работает, заключается в том, что $ длина определяется как текст, а не как целое число.

Ответы [ 5 ]

16 голосов
/ 05 мая 2009

Две вещи:

  1. Это не работает, потому что вы неправильно написали длину <-> длина

  2. Правильный способ преобразования строки в целое число - использование функции intval.


$length = intval($_POST['length']);
$url = substr($url, 0, $length);
10 голосов
/ 05 мая 2009

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

2 голосов
/ 05 мая 2009

Кажется, что орфографическая ошибка в вашем коде: длина против длины - это может быть вашей проблемой прямо сейчас.

Чтобы сделать явное преобразование, используйте функцию intval ()

$length = intval($_POST['length']);
1 голос
/ 06 мая 2009

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

$numeric_string = '42';
echo ($numeric_string * 2);

Это выведет "84", как и ожидалось. См. Ссылку на Type-Juggling .

Если вы ЗНАЕТЕ, что ваша строка является числом (возможно, проверяя is_numeric () ), тогда вы можете либо привести переменную к целому числу

$numeric_string = '42';
$converted_integer = (int) $numeric_string;
// or
$converted_integer = (integer) $numeric_string;

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

$numeric_string = '42';
$converted_integer = intval($numeric_string);

Важным моментом, который следует помнить о intval (), является то, что он вернет 0, если не сможет преобразовать строку в целое число. Это может (потенциально) дать вам второй способ проверки на наличие ошибок (после is_numeric () ), или это может привести к неожиданным результатам, если вы не уверены, что переменная является числовой для начала.

0 голосов
/ 06 мая 2009

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

$int = (int) "1"; // var_dump($int) => int(1)
$float = (float) "1.2345"; // var_dump($float) => float(1.2345)

Остерегайтесь неправильных представлений переменной, которую вы конвертируете, хотя, то есть приведение "случайной строки" к числу может не дать ожидаемых вами результатов. Если вы обрабатываете пользовательский ввод, вам лучше использовать предложенные выше решения с вызовами функций, такими как intval и floatval

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...