在PHPin_array功能的使用存在的问题及对策

首先,介绍需求背景:

发票的方式:

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

1 =中间发送

2 =请求

3 =电子发票

现在需要检测用户提交的数据:


PHP;自动链接:false; >如果(!in_array($ _post { 'invoice_action},阵列(0,1,2,3))){
抛出异常(请选择正确的发票模式);
}


在这个时候,有一个问题,如果根本没有价值为_post { 'invoice_action},为什么没有异常抛出

可以确认,这是PHP的一个凹坑,作为一种弱类型语言,是的,它是一个坑。

看看这套代码:


回声in_array('',阵列(0):0 / 1);结果:1
回声in_array(null,阵列(0):0 / 1);结果:1
回声in_array(假,阵列(0):0 / 1);结果:1


这么大的一个坑,我们怎么到处走动或者把它装满

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


回声in_array('',阵列(0):0真实,1); / /结果:0
回声in_array(null,阵列,真(0):0 / 1);结果:0
回声in_array(假、阵列、真(0):0 / 1);结果:0


方法二:仍然是数据类型的方向,数组中的0被转换为字符串。


回声in_array('',阵列('0'),真的)1:0; / /结果:0
回声in_array(null,阵列,真('0')1):0; / /结果:0
回声in_array(假、阵列、真实('0')1):0; / /结果:0


总结

以上是关于存在的问题及解决方法在使用in_array功能的PHP。我希望这篇文章能帮助一些遇到这个问题的朋友。如果你有问题,你可以留言。