弱类型语言的php对于0ampampquot0ampampquotampampquot000ampampquotampampquot00ampampquot判断与处理问题
问题分析:
当您的变量出现0 、"0"、"000" 、"00" 等字符时,由于代码不严谨的时 出现的问题解决办法
对不同类型的变量需要注意变量的使用场景与逻辑 进行特殊处理与逻辑判断1、使用 === 恒等与 或者 !== 恒不等于 判断 类型字符串 ;$a = "0" ; $b = 0 ; $c = "000" ; var_dump($a == $b) ; // boolean true echo PHP_EOL ; var_dump($a == $c) ; // boolean true echo PHP_EOL ; var_dump($b == $c) ; // boolean true echo PHP_EOL ; // todo 弱类型下 三个都是相等的 ; var_dump($a === $b) ; // boolean false echo PHP_EOL ; var_dump($a === $c) ; // boolean false echo PHP_EOL ; var_dump($b === $c) ; // boolean false // todo 强类型下他们就是不一样的 ;2、使用 in_array 判断 字符串是否存在 , 开启strict 的 严谨模式$a = "0" ; $b = 0 ; $c = "000" ; $arr = [$a,$b,$c] ; $d = "00" ; var_dump(in_array($d,$arr)) ; // boolean true echo PHP_EOL ; // say: 宽松模式下 "00" 字符串也存在$arr数组中 其实就是弱类型的弊端,不注意的话,就容易导致问题 "00" 与 0 "0","000" 匹配成功 其实 数据组并没有‘00’; var_dump(in_array($d,$arr,true)) ; // boolean false echo PHP_EOL ; // say: 严谨模式下 "00" 字符串不存在$arr数组中 , 不用类型的数据是不会相等的,也就是 "00" 不会与 0 "0","000" 匹配成功,满足严谨的逻辑 ;问题2 分析:
当一个数组中包含了这个0 、"0"、"000" 、"00" 等字符时 , 使用array_fliter 函数去除空值,可以将0 、"0"、"000" 、"00" 已去除了的问题 ;解决办法:$temp_label_arr = array_filter($temp_label_arr,function ($v, $k){ return $v != "" && $v != null ; },ARRAY_FILTER_USE_BOTH) ;$a = "0" ; $b = 0 ; $c = "000" ; $f = 1 ; $d = "00" ; $e = "" ; $g = null ; // question : 去除数组中的 空值 ; $arr = [$a,$b,$c,$f,$d,$e,$g] ; var_dump($arr) ; echo PHP_EOL ; /** * array (size=7) 0 => string "0" (length=1) 1 => int 0 2 => string "000" (length=3) 3 => int 1 4 => string "00" (length=2) 5 => string "" (length=0) 6 => null * */ // 使用 array_filter 函数直接去除 var_dump(array_filter($arr)) ; /** * array (size=3) 2 => string "000" (length=3) 3 => int 1 4 => string "00" (length=2) * */ // result : 没有解决我们的问题 ,同时把 ‘0’ 和 0 也一并剔除了eq 2 : array_filter 的 回调函数callback 处理我们的数组 得到应得的数组$new_arr = array_filter($arr,function ($v, $k){ return $v != "" && $v != null ; },ARRAY_FILTER_USE_BOTH) ; var_dump($new_arr) ; /** * array (size=4) 0 => string "0" (length=1) 2 => string "000" (length=3) 3 => int 1 4 => string "00" (length=2) */ // result : 根据自己的续期得到对应的数据数组
1
在线教育发牌照了,行业未来怎么走?学科类教育终于有了新动作了,这次是针对高中学科类教育牌照发放,且这种牌照是可以为盈利性质的。我们纵观目前北京广东的政策情况,总结出来教育行业未来发展的三个关键词备改审属地化经营和强
主管集体请辞视频会议裁员900人公司CEO道歉美国网络抵押贷款公司Better。com爆发裁员风波,43岁CEO贾格(VishalGarg)12月1日在内部视频会议上无预警宣布,将要开除9员工,对象就是荧幕前的900人,并且立
ApacheLog4j2曝出远程代码执行漏洞近日,用于Java语言所开发系统的开源日志框架ApacheLog4j2曝出远程代码执行漏洞,如果用户输入的数据通过该工具被日志记录,攻击者可构造特殊的数据请求包利用漏洞在目标设备上
每日一问电商秒杀系统特点微语靠自己的力量一步步跨过泥泞,才能离想要的生活越来越近。人生中最好的贵人,永远是努力的自己。系统特点清晰描述该系统的特点秒杀系统的特点是大流量以及流量倾斜,大量流量会集中在少量的
京东方A入局元宇宙?这盘棋不只有VRAR截至2021年上半年,京东方A累计可使用专利超过70000件,覆盖显示传感人工智能物联网等多个领域,连续多年在世界专利排行榜中位列全球前十。在VRAR相关领域,京东方A已经申请了近
央广网携手京东集团发布秧苗计划未来三年培养千名新农人央广网北京12月10日消息(记者张佳琪)12月10日15时,中央广播电视总台央广网京东集团战略合作发布会在央广新媒体大厦举办,这标志着云遇中国县域原产经济带振兴计划正式启动。在此次
勒索软件攻击防御的9件事什么是勒索软件攻击?勒索软件是一种特定类型的恶意软件,它将数据作为人质来勒索赎金。网络钓鱼电子邮件是其一种常见的传播方式,同时勒索软件也可以借由下载广泛传播,也就是在用户访问受到感
自动化测试实例三脚本开发(下)一调用测试用例,判断测试结果。仅仅通过上面对脚本增强还不够,不能做到真正的自动化测试,还必须让脚本正确地执行所有用例,并且同时判断每个测试用例执行的结果。对于登录功能调用测试用例后
12岁男孩制作NFT日入百万,NFT是什么鬼?(附制作教程)前半周我都在忙着研究NFT区块链和元宇宙的一些概念,接着自己注册数字钱包制作NFT,还下场买了一些币。对GameFi很感兴趣,找了一些游戏制作的书开始学,期待在未来的某一天能够上线
麒麟9000用完了?爆料华为新手机将用的这款5G芯片据有关媒体爆料称华为手机在经历重重限制下于7月份发布了P50系列新机,华为轮值董事长也曾明确表示不会放弃手机业务。不过,随着麒麟芯片库存的吃紧,原本应该在下半年发布的全新Mate5
全球首款骁龙8Gen1处理器手机发布,跑分超106万,首发价2999元起确实骁龙8Gen1发布已经有一段时间了,但是并没有一款搭载这款处理器的手机发布,同时首发的争议也是一直不断,特别是小米和联想的摩托罗拉。不过就在今天,也就是12月9日,摩托罗拉实现