php in_array的坑

今天做一个根据用户充值领礼包码的活动,遇到一个问题部分用户领礼包时会一直提示“系统错误,请稍后再试”,这是什么情况,一开始以为接口出错了,一番排查后发现了问题所在,是in_array坑了~~~

情况大概如下:

in_array(errorCode,errorCodeArr)
errorCode是1,2,3,4,5,分别对应不同的出错信息
errorCodeArr:array(1,2,3,4,5)

看起来是不是很好,很完美,无懈可击~~~

但是当errorCode=‘1||1‘,‘1|1‘,‘1-1‘,‘3-2‘类似值的时候,in_array返回是true

就是说本来取到的是充值金额,结果程序判断是接口返回错误,坑了~~~~

看了一下php官网的文档

bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )
在 haystack 中搜索 needle,如果没有设置 strict 则使用宽松的比较。

所以可以用下面的代码避免模糊比较
in_array(errorCode,errorCodeArr,true)

记录一下这个坑,但愿下不会踩到了,O(∩_∩)O哈哈~

done!

时间: 2024-08-04 02:41:20

php in_array的坑的相关文章

PHP5.3中 in_array()的一个坑

因排查问题,发现目前生产环境的PHP版本5.3中有这个问题: //php5.3 echo PHP_INT_MAX; $str = "114100007160061630632"; $arr = array("114100007160061630631"); var_dump(in_array($str,$arr)); echo 'PHP:' .phpversion(); exit; 对于纯数字的非严格比较,因超出Int最大值,5.3中给出的是结果是 true. 5.

php中in_array函数的坑

由于PHP是弱类型语言,所以有自动类型转换 例子 1 $array = [0, 1, 2, '3']; 2 3 var_dump(in_array('abc', $array)); //true 4 var_dump(in_array('1ac', $array)); //true 5 // 以上自动转换 abc -> 0, 1ac -> 1 6 // 所以判断都是true 7 8 // 类似的还有 9 10 $a = null; 11 $b = false; 12 echo $a == $b

常用的代码收集,没有任何技术含量,只是填坑的积累

以下是常用的代码收集,没有任何技术含量,只是填坑的积累.转载请注明出处,谢谢. 转自:https://github.com/jsfront/src/blob/master/js.md 1. PC - js 返回指定范围的随机数(m-n之间)的公式 Math.random()*(n-m)+m return false return false // event.preventDefault()会阻挡预设要发生的事件. // event.stopPropagation()会阻挡发生冒泡事件. //

踩一坑,采一金之php数据类型那点“破”事

学海无涯,乘舟以渡之~ php边学边写差不多一年多点,php这种弱类型语言与之前接触的c.java.as3等语言还是挺不一样的,现在觉得很庆幸的是从c开始学编程,无论数据类型还是指针也好,至少有个基础的概念. 在php数据类型上踩了不少坑,也学到了一些东西,在这里分享一下,看源码可能会很枯燥,不过了解一些底层实现就好,后面不要再踩坑. 序. 之前在网上看到有比较热的帖子说:PHP的ip2long有bug,请慎用?于是看了下描述,大致如下 <?php echo ip2long('58.99.11.

遭遇php的in_array低性能问题

PHP的性能一直在提高.然而,若是用的不恰当,或是一个不留神,还是可能会踩到PHP内部实现方面的坑的.我在前几天的一个性能问题上就碰到了 PHP的性能一直在提高.然而,若是用的不恰当,或是一个不留神,还是可能会踩到PHP内部实现方面的坑的.我在前几天的一个性能问题上就碰到了. 事情是这样子的,一位同事反馈我们的一个接口每次返回需要5秒之久,我们一起review了代码,"惊喜"的发现居然在循环(大约900次)中调用了一个读缓存的操作,而这个缓存的key并没有改变,因此我们把这段代码移到了

php编程中如何避免调用in_array()函数出错问题

php开发过程中,经常会遇到判断一维数组中是否含有某个元素,这是会用到in_array();由于php是弱类型的语言,所以不小心的话,也会踩到"坑".(注:这里测试用到的php版本是5.6.)那么具体该如何注意呢?下面就来跟大家分享一些实用经验. 一.前方有坑 直接上代码: $arr = ['php在路上',1]; echo in_array(true,$arr) ? 1 : 0; echo in_array(0,$arr) ? 1 : 0; 结果: 11 二.为啥有坑 其实,从底层源

移动端点击事件全攻略,有你知道与不知道的各种坑

看标题的时候你可能会想,点击事件有什么好说的,还写一篇攻略?哈哈,如果你这么想,只能说明你too young to simple. 接触过移动端开发的同学可能都会面临点击事件的第一个问题:click事件的300ms延迟响应.不能立即响应给体验造成了很大的困扰,因此解决这个问题就成为了必然. 这个问题的解决方案就是: zepto.js的tap事件.tap事件可以理解为在移动端的click事件,而zepto.js因为几乎完全复制jQuery的api,因此常常被用在h5的开发上用来取代jquery.

[原创] 关于免费VPN我踩过的那些坑

关于免费VPN我踩过的那些坑 因为工作的关系,笔者经常需要用到VPN, 访问国外国网站,你懂的. 我曾经试着自己购买VPS搭建过VPN, 被封了后就没心情再维护了,毕竟直接买VPN比VPS便宜太多.时间一长,也就有了一些经验. 这里总结成表格的形式,分享给大家: [NydusVPN] 知乎推荐的香港VPN, 比直通车好,线路稳定性好,办公游戏适合.注册前7天内可以无条件退款哦.  官方网站  [Astrill] 老牌VPN,但近两年被封底得太厉害,现在已经不太给力了. 注册第一个月能免费使用(付

Linux下GDB调试与对拍(先挖个坑)

应为NOIP要复赛在NOI-Linux下编写程序,所以被迫选择Vim+Gdb(主要是Guide太丑了). 虽然GUIDE的调试功能已经对付大多数的调试,反正学一学GDB的使用也没什么坏处. 1 生成调试信息 要调试C/C++的程序,首先在编译时,我们必须要把调试信息加到可执行文件中.使用编译器(cc/gcc/g++)的 -g 参数可以做到这一点.如: gcc -g hello.c -o hello g++ -g hello.cpp -o hello 如果没有-g,你将看不见程序的函数名.变量名,