if(!in_array($_post['invoice_action'], array(0,1,2,3))){ throw new exception('请选择正确的发票方式'); } 这" />

PHP中in_array函数使用的问题与解决办法

 2025-01-16  阅读 238  评论 8  点赞 103

摘要:先介绍一下需求背景: 发票方式: 0=捐赠(不要问我为什么,历史原因) 1=对中寄送 2=索取 3=电子发票 现在要对用户提交的数据进行检测: php;auto-links:false;">if(!in_array($_post['invoice_action'], array(0,1,2,3))){ throw new exception('请选择正确的发票方式'); } 这

先介绍一下需求背景:

PHP中in_array函数使用的问题与解决办法

发票方式:

0=捐赠(不要问我为什么,历史原因)

1=对中寄送

2=索取

3=电子发票

现在要对用户提交的数据进行检测:

php;auto-links:false;">if(!in_array($_post['invoice_action'], array(0,1,2,3))){ throw new exception('请选择正确的发票方式'); }

这个时候出现一个问题,如果压根就不存在$_post[‘invoice_action']这个值,为什么没有抛出异常?

经确认,这就是php作为弱类型语言的一个坑,没错,这是一个坑.

看一下这组代码:

echo in_array('', array(0)) ? 1 : 0; // 结果:1 echo in_array(null, array(0)) ? 1 : 0; // 结果:1 echo in_array(false, array(0)) ? 1 : 0; // 结果:1

这么大一个坑,我们要怎么绕过或者填起呢?

方法一:in_array支持第三个参数,强制对数据类型检测

echo in_array('', array(0), true) ? 1 : 0; // 结果:0 echo in_array(null, array(0), true) ? 1 : 0; // 结果:0 echo in_array(false, array(0), true) ? 1 : 0; // 结果:0

方法二:依然是数据类型方向,把数组中的0改为字符串

echo in_array('', array('0'), true) ? 1 : 0; // 结果:0 echo in_array(null, array('0'), true) ? 1 : 0; // 结果:0 echo in_array(false, array('0'), true) ? 1 : 0; // 结果:0

总结

以上就是关于php中in_array函数使用时遇到的问题与解决办法,希望这篇文章对同样遇到这个问题的朋友能有所帮助,如果大家有疑问可以留言交流。



标签:phpphp教程

评论列表:

  •   hahaha1
     发布于 3天前回复该评论
  • 写的很不错,学到了!
  •   tg7187037109
     发布于 2天前回复该评论
  • 又学到了新知识!
显示更多评论

发表评论:

管理员

承接各种程序开发,外贸网站代运营,外贸网站建设等项目
  • 内容2460
  • 积分67666
  • 金币86666

Copyright © 2024 LS'Blog-保定PHP程序员老宋个人博客 Inc. 保留所有权利。 Powered by LS'blog 3.0.3

页面耗时0.0275秒, 内存占用1.94 MB, 访问数据库31次

冀ICP备19034377号