PHP使用settype()转integer失败反而返回boolean的解决方法
问题原因及修复方案
问题根因
settype() 函数的作用是直接修改传入变量的类型,它的返回值是布尔类型,仅用于标识本次类型转换是否执行成功,而非转换后的变量值。你现在的写法是将settype()的布尔返回值赋值给了原变量$withdraw,直接覆盖了原本要转换的内容,才会得到布尔类型的结果。
修复方案
有两种常用的修复方式可以选择:
方式1:保留settype()调用,去掉赋值操作
直接调用settype()即可,不需要把返回值赋值给原变量:
$withdraw = $_POST["withdraw"]; echo gettype($withdraw); // 输出 string settype($withdraw, 'integer'); echo gettype($withdraw); // 输出 integer
方式2:使用强制类型转换或intval()函数
如果习惯直接赋值的写法,可以用强制类型转换语法或者intval()函数,二者都会返回转换后的整数值:
// 强制类型转换写法 $withdraw = (int)$_POST["withdraw"]; // intval函数写法 $withdraw = intval($_POST["withdraw"]);
补充注意事项
如果输入的字符串不是合法的数字格式,上述转换逻辑会默认返回0。如果需要对输入合法性做校验,可以先通过is_numeric()判断后再执行转换:
$withdraw = $_POST["withdraw"]; if (!is_numeric($withdraw)) { // 自定义非法输入处理逻辑 die("请输入合法的金额数字"); } $withdraw = (int)$withdraw;
内容的提问来源于stack exchange,提问作者Marcello Cavazza
相关产品推荐
相关产品推荐

