2009-05-05 44 views
2

我有一个变量,通过POST调用从输入到文本字段的窗体中定义。有什么办法将这个变量转换为整数?如何在PHP中将文本变量更改为int?

从形式:

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

从PHP代码:

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

这似乎并没有工作,唯一的原因,我认为这是不工作是因为$ lenght被定义为文本而不是整数。

+0

$ _POST ['lenght'];那是意外吗? – TStamper 2009-05-05 19:30:11

+0

我知道我错拼的长度。我使用的是没有内置拼写检查器的IE6。不知道我是如何幸存下来的...... – JoshFinnie 2009-05-05 22:20:18

回答

15

两件事情:

  1. 它不工作,因为你拼错的长度< - > lenght

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


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

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

做一个明确的转换,使用函数intval()

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

它可能不会两次的,因为你拼错的长度,而不是零和或三次工作。

0

如果你确信你正在寻找的价值已经为你想要转换成,你也可以用香草类型转换操作的类型的正确表示:

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

请注意您要转换的变量的不正确表示,即将“随机字符串”转换为数字可能不会产生您期望的结果。如果您在处理用户输入,你使用上述建议的解决方案与函数调用,如INTVALfloatval

1

忽略上面的“长”的拼写错误的更好,也有一些方法来显式转换一个字符串转换为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,如果它不能将字符串解析为Integer。这可能(潜在地)给你第二种方法来检查错误(在is_numeric()之后),或者如果你不能确保变量是数字开头的话,它可能会导致意想不到的结果。