我有一个变量,它由表格中的POST调用定义,并将其输入到文本字段中。有没有办法将此变量转换为整数?
从表格中:
Lenght: <input name="length" value="10" type="text" id="lenght" size="2" />
来自php代码:
$length = $_POST['lenght'];
$url = substr($url, 0, $length);
这似乎不起作用,我觉得它不起作用的唯一原因是因为$ lenght被定义为文本而不是整数。
答案 0 :(得分:16)
两件事:
它不起作用,因为你拼写错误的长度&lt; - &gt; lenght
将字符串转换为整数的正确方法是使用函数intval。
$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