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

2025-05-29 0 38

先介绍一下需求背景:

发票方式:

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

1=对中寄送

2=索取

3=电子发票

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

?

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作为弱类型语言的一个坑,没错,这是一个坑.

看一下这组代码:

?

1

2

3
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支持第三个参数,强制对数据类型检测

?

1

2

3
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改为字符串

?

1

2

3
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函数使用时遇到的问题与解决办法,希望这篇文章对同样遇到这个问题的朋友能有所帮助,如果大家有疑问可以留言交流。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 PHP中in_array函数使用的问题与解决办法 https://www.kuaiidc.com/96421.html

相关文章

发表评论
暂无评论