PHP中相加两个$_POST变量的正确语法及报错问题咨询
解决Notice: A non well formed numeric value encountered的问题
这个提示本质是说:你用来相加的$_POST['old_points']或$_POST['new_points']里,至少有一个不是合法的数字格式——可能是空字符串、带了非数字字符(比如空格、字母、符号),甚至是个数组类型,PHP没法直接把它转成有效的数字来做加法。
给你几个实用的排查和解决步骤:
先搞清楚变量的真实内容
先在第48行之前加一行代码,打印出两个变量的实际值和类型:var_dump($_POST['old_points'], $_POST['new_points']);运行后你就能看到,比如是不是
string(4) " 100"(带空格的字符串)、string(0) ""(空值),或者甚至是array(1) { [0]=> string(3) "abc" }(数组),这些都会触发这个Notice。快速修复:强制类型转换
如果确定输入应该是整数,直接把变量转成整数类型再相加,PHP会自动处理掉字符串里的空格等干扰内容,空值会转成0:$points = (int)$_POST['old_points'] + (int)$_POST['new_points'];如果是浮点数就用
(float)替代(int)。更严谨的处理:过滤+校验
要是想避免无效输入导致的问题,建议用filter_var先验证和过滤输入,确保拿到的是合法数字再相加:// 验证并过滤为整数,无效的话会返回false $old_points = filter_var($_POST['old_points'] ?? '', FILTER_VALIDATE_INT); $new_points = filter_var($_POST['new_points'] ?? '', FILTER_VALIDATE_INT); // 先检查是否都是有效数字,再执行加法 if ($old_points !== false && $new_points !== false) { $points = $old_points + $new_points; } else { // 这里可以处理输入无效的情况,比如提示用户输入正确的数字 $points = 0; // 或者抛出错误提示 }这里用
$_POST['old_points'] ?? ''是为了避免变量不存在时出现Undefined index的提示。额外小提示
接收POST数据前,最好先检查对应的键是否存在,比如用isset($_POST['old_points']),这样能避免很多潜在的小问题。
内容的提问来源于stack exchange,提问作者Alfie LC
相关产品推荐
相关产品推荐

