网站首页 > 基础教程 正文
弱类型语言的php对于 0 、"0"、"000" 、"00" 判断与处理问题
ccvgpt 2025-01-24 10:52:23 基础教程 29 ℃问题分析:
当您的变量出现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
猜你喜欢
- 2025-01-24 我用了十年时间,亏掉百万到财富自由,终于顿悟:“锤子线买进,上吊线卖出”,从60万重赚1100万
- 2025-01-24 “巨量阴线式”洗盘:既可打低股价继续吸筹,又可洗掉浮筹,对普通散户杀伤力极大
- 2025-01-24 用犹太人的投资思维来赚钱:用50%的资金买入,当价格上涨10%时再用30%的资金买进,越看越触目惊心
- 2025-01-24 我是如何3年内从亏损70万做到770万,建议死啃“并列阴线满仓买,并列阴线清仓卖”,这样操作才能回本
- 2025-01-24 一位出租车司机给我上的炒股课:“不冲高不卖,不跳水不买”,原来这才是短线操作的最高境界
- 2025-01-24 犹太人大道至简的暴利思维:一辈子只做精一只股,用50%的资金买入,上涨10%时再用30%的资金加仓
- 2025-01-24 我花了整整9年,输掉百万到财富自由:终于顿悟:“出有三不卖,进有七不买”,从20万重赚1000万
- 2025-01-24 PowerBI之DAX神功:第1卷第7回 基础表函数之Filter函数
- 2025-01-24 “断头铡刀”是大跌前的最后预警,多头将死绝,空头将崛起,无一偏差,出现即是最好的逃顶时机
- 2025-01-24 华尔街大亨讲述A股:原来炒股不止指标,更要看“龙虎榜”,这个赚钱机会太让我心动了
- 05-162025前端最新面试题之HTML和CSS篇
- 05-16大数据开发基础之HTML基础知识
- 05-16微软专家告诉你Win10 Edge浏览器和EdgeHTML的区别
- 05-16快速免费将网站部署到公网方法(仅支持HTML,CSS,JS)
- 05-16《从零开始学前端:HTML+CSS+JavaScript的黄金三角》
- 05-16一个简单的标准 HTML 设计参考
- 05-16css入门
- 05-16前端-干货分享:更牛逼的CSS管理方法-层(CSS Layers)
- 最近发表
- 标签列表
-
- jsp (69)
- pythonlist (60)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- pythonif (86)
- location.href (69)
- dockerexec (65)
- deletesql (62)
- c++模板 (62)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- console.table (62)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)