如何在PHP中将文本变量更改为int?

时间:2009-05-05 19:27:21

标签: php forms

我有一个变量,它由表格中的POST调用定义,并将其输入到文本字段中。有没有办法将此变量转换为整数?

从表格中:

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

来自php代码:

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

这似乎不起作用,我觉得它不起作用的唯一原因是因为$ lenght被定义为文本而不是整数。

5 个答案:

答案 0 :(得分:16)

两件事:

  1. 它不起作用,因为你拼写错误的长度&lt; - &gt; lenght

  2. 将字符串转换为整数的正确方法是使用函数intval。


  3. $length = intval($_POST['length']);
    $url = substr($url, 0, $length);
    

答案 1 :(得分:10)

它可能不起作用,因为你拼错了两次长度,而不是零或三次。

答案 2 :(得分:2)

似乎是代码中的拼写错误:长度与长度 - 这可能就是你的问题。

要进行显式转换,请使用intval()函数

$length = intval($_POST['length']);

答案 3 :(得分:1)

忽略上面'length'的拼写错误,有几种方法可以在PHP中将字符串显式转换为整数。通常,此转换将自动进行。请使用以下代码:

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

这将按预期打印出“84”。请参阅Type-Juggling上的参考资料。

如果您知道您拥有的字符串是一个数字(可能通过检查is_numeric()),那么您可以cast the variable to an Integer

$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()之后),或者如果您没有正确确保该变量是数字开头,则可能会导致意外结果。

答案 4 :(得分:0)

如果您确定所查看的值具有要转换为的类型的正确表示,则还可以使用vanilla类型转换操作:

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

请注意您正在转换的变量的不正确表示,即将“随机字符串”转换为数字可能不会产生您期望的结果。如果您正在处理用户输入,那么最好使用上面建议的解决方案进行函数调用,例如 intval floatval