关于php ‘==’ 与 '===' 遇见的坑
两个的区别所有PHPer都知道,
今天在遍历 xmlNode时,自己写的代码就碰坑了
想遍历xmlNode为数组
得到的xmlNode为
想要把所有的simpleXmlElement对象都遍历转成数组,并且去掉comment(注释)
开始写的代码是这样的
private function _xmlObj2Arr($xmlNode)
{
$arr = [];
foreach ((array)$xmlNode as $key => $value) {
if ($key == 'comment') continue;
if ($value instanceof \SimpleXMLElement || is_array($value)) {
$arr[$key] = $this->_xmlObj2Arr($value);
} else {
$arr[$key] = trim($value);
}
}
return $arr;
}
但是结果返回的总是空数组,
这就纳闷了,怎么continue直接跳出来了,经过排查执行到第一个判断'comment‘就跳出了整个foreach。
最终找到原因
comment应该用’===‘
第一次循环的 时候 var_dump( 0 == 'commnet') //true
so
正确的代码应该是这样的,其实就是把'=='换成了'==='
private function _xmlObj2Arr($xmlNode)
{
$arr = [];
foreach ((array)$xmlNode as $key => $value) { if ($key === 'comment') continue;
if ($value instanceof \SimpleXMLElement || is_array($value)) {
$arr[$key] = $this->_xmlObj2Arr($value);
} else {
$arr[$key] = trim($value);
}
}
return $arr;
}
理想的结果是
关于php ‘==’ 与 '===' 遇见的坑的更多相关文章
- iOS开发:集成支付宝(遇见的坑和便捷撸代码)
开发iOS最重要的就是支付了,天朝之内最常用的就是支付宝了,下面就以自己的经历说明如何集成支付宝+遇见的坑. 首先,集成支付宝最好别使用Cocoapods,很多人都说使用起来很方便,可是我每次只要使用 ...
- Vue 实际项目中你可能会遇见的坑
纸上得来终觉浅,绝知此事要躬行! Vue的文档和教程看的太多,小的demo做的多,也不如自己实际的进行一个完整项目的开发.只有做了才知道原来问题这么多,这里列举了一些你做demo教程可能不会遇见的坑. ...
- kubernetes 网络故障遇见的坑
1.记录一下自己搭建kubernetes 集群遇见的坑. 过程是我学技术以来最大的bug,处处都是坑,稍微写成一点, 就完全起不来, 起不来之后, 还找不到故障点, 郁闷之极. 后续会慢慢分享给大家. ...
- Android SDK4/5/6/7,相册、拍照及裁剪功能及遇见的坑
保存照片和视频到系统相册显示- http://blog.csdn.net/chendong_/article/details/52290329 Android 7.0 之拍照与图片裁剪适配-http: ...
- java调用c/c++代码简单实现以及遇见的坑
以下内容均来自互联网,感谢你们的分享,我只是使用的时候看这方便,可以称呼我“搬运工” 如有不合适的地方请与我联系,我会及时改正 首先你可能会遇见以下错误 第一个错误是你在vs编译器没有选择使用rele ...
- mysql优化过程中遇见的坑(mysql优化问题特别注意)
不要听信你看到的关于优化的“绝对真理”,包括本文所讨论的内容,而应该是在实际的业务场景下通过测试来验证你关于执行计划以及响应时间的假设. 单条查询最后添加 LIMIT 1,停止全表扫描. 对于char ...
- 安装kubernetes遇见coredns坑
安装kubernetes遇见问题 kubectl describe pod coredns -n kube-system, 查看发现coredns readiness 一直unhealthy, 并且一 ...
- centos6.5安装pysider遇见的坑
一.服务器自带pyhon2.7.9 安装pip, # yum -y install python-devel python-setuptool wget http://pypi.python.org/ ...
- centos6.5上安装redis3.2.1遇见的坑
解决方法: 安装gcc即可解决 解决方法: make MALLOC=libc 原因分析: 说关于分配器allocator, 如果有MALLOC 这个 环境变量, 会有用这个环境变量的 去建立Redi ...
随机推荐
- Python之时间表示
Python的time模块中提供了丰富的关于时间操作方法,可以利用这些方法来完成这个需求. time.time() :获取当前时间戳 time.ctime(): 当前时间的字符串形式 time.loc ...
- POJ 1651 Multiplication Puzzle (区间DP,经典)
题意: 给出一个序列,共n个正整数,要求将区间[2,n-1]全部删去,只剩下a[1]和a[n],也就是一共需要删除n-2个数字,但是每次只能删除一个数字,且会获得该数字与其旁边两个数字的积的分数,问最 ...
- 使用ABAP代码返回S/4HANA Material上维护的Attachment明细
在事务码 MM02里为ID为16的material维护附件: 如何使用ABAP代码获得如下附件的名称和文件内容? REPORT zgos_api. DATA ls_appl_object TY ...
- 并发教程--JAVA5中 计数信号量(Counting Semaphore)例子
并发教程--JAVA5中 计数信号量(COUNTING SEMAPHORE)例子 本文由 TonySpark 翻译自 Javarevisited.转载请参见文章末尾的要求. Java中的计数信息量(C ...
- DROP OPERATOR CLASS - 删除一个操作符类
SYNOPSIS DROP OPERATOR CLASS name USING index_method [ CASCADE | RESTRICT ] DESCRIPTION 描述 DROP OPER ...
- SSH框架使用poi插件实现Excel的导入导出功能
采用POI生成excel结构 直接贴出代码 excel表格导出功能 action代码: struts.xml配置: 前台jsp代码:
- ARC中__weak;__strong;__unsafe_unretained;修饰词
测试代码: // Human.h代码 @interface Human : NSObject @property (nonatomic, weak) Cat *pinkCat; @property ( ...
- 怎样处理jmeter中文乱码
jmeter返回 中文乱码: 1.在jmeter的bin目录下,找到jmeter的配置文件,jmeter.properties,然后把 sampleresult.default.encoding=UT ...
- PHP四种序列化方案
原文地址:https://t.ti-node.com/thread/... 数据的序列化是一个非常有用的功能,然而目测很多人跟我一样,在刚接触这玩意的时候压根就不理解这货色到底是干啥用的,反正老师说了 ...
- OC8051项目启动