《PHP学习:PHP中in_array函数使用的问题与解决办法》要点:
本文介绍了PHP学习:PHP中in_array函数使用的问题与解决办法,希望对您有用。如果有疑问,可以联系我们。
先介绍一下需求背景:PHP学习
发票方式:PHP学习
0=捐赠(不要问我为什么,历史原因)PHP学习
1=对中寄送PHP学习
2=索取PHP学习
3=电子发票PHP学习
现在要对用户提交的数据进行检测:PHP学习
php;auto-links:false;">if(!in_array($_POST['invoice_action'], array(0,1,2,3))){ throw new Exception('请选择正确的发票方式'); }
这个时候出现一个问题,如果压根就不存在$_POST[‘invoice_action']
这个值,为什么没有抛出异常?PHP学习
经确认,这就是PHP作为弱类型语言的一个坑,没错,这是一个坑.PHP学习
看一下这组代码: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
这么大一个坑,我们要怎么绕过或者填起呢?PHP学习
方法一:in_array支持第三个参数,强制对数据类型检测PHP学习
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改为字符串PHP学习
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学习
以上就是关于PHP中in_array函数使用时遇到的问题与解决办法,希望这篇文章对同样遇到这个问题的朋友能有所帮助,如果大家有疑问可以留言交流.PHP学习
转载请注明本页网址:
http://www.vephp.com/jiaocheng/3911.html