PHP教师成绩册项目如何区分空字符串''与数值0?
问题根因
你遇到的判断不触发的核心原因是:HTML 表单提交的所有内容默认是字符串类型,<input value="0">提交后拿到的值是字符串'0',而非整数类型的0。PHP 全等运算符===会同时校验值和类型,字符串'0'和整数0类型不匹配,所以=== 0条件自然永远返回false。
解决方案
你可以直接基于字符串类型做严格匹配,无需额外转换类型:
// 判定为未录入成绩(空提交场景) if ($array['grades']['brian']['project'] === '') { // 对应未录入逻辑,比如数据库对应字段存NULL,或者标记为待录入状态 } // 判定为录入0分(有效0分场景) if ($array['grades']['samuel']['homework'] === '0') { // 对应0分逻辑,直接存入数值0到数据库即可 }
如果后续需要统一转换为数值类型写入数据库,可以按如下方式处理:
// 处理后null对应未录入,0对应有效0分,其他为正常分数 $score = $value === '' ? null : (int)$value;
验证方法
如果不确定拿到的值的类型,可以用var_dump($value)打印查看,表单提交的0会输出string(1) "0",空值会输出string(0) "",明确类型后再写判断逻辑即可。
内容的提问来源于stack exchange,提问作者Reid
相关产品推荐
相关产品推荐

