strpos与“===”引发的“血案”

2024-05-24 00:32
文章标签 引发 血案 strpos

本文主要是介绍strpos与“===”引发的“血案”,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、问题描述

1、需求:扫描参数二维码时,要执行scanMsg方法

2、因为strpos使用不当,导致本要执行sanMsg()方法,变成执行了subscribeMsg();

问题代码:

 

正确代码:

二、解决问题

strpos()函数,查找字符串在另一字符串中第一次出现的位置,位置从0开始,有匹配时返回位置index,无匹配时返回false;

如下代码:

在“qrscene_1”中查找“qrscene_”,匹配在开始位置即0;

 strpos($EventKey,"qrscene_") != false,即0!=false,返回值为0,等号是值对数值做判断,对于==,是“非真即零”;

 strpos($EventKey,"qrscene_") !== false,即0!==false,全等号是对类型和数值做判断,首先0和false的类型便不相等,所以返回值为1;

这篇关于strpos与“===”引发的“血案”的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/996859

相关文章

Windows 与 Linux 下的 PAGE_ALIGN 页面对齐宏引发的 BUG

今天遇到了一个BUG,找了半天才定位到是 PAGE_ALIGN 宏导致的。 这个宏在 Windows 上和 Linux 上的定义不同,才得以引发了这次BUG的发生。   PAGE_ALIGN 的用处是对齐一个页面地址。 先来看看定义: // Windows#define PAGE_ALIGN(Va) ((PVOID)((ULONG_PTR)(Va) & ~(PAGE_SIZE

一次压测引发的数据库 CPU 飙升

作者:昀鹤 一次压测过程中,当数据库的 qps 和 tps 都正常时,如果 cpu 利用率异常的高,应该如何排查?希望通过这篇文章,给你一些启发... 一、业务背景 业务需要控制频道内兑换现金的数量,于是在产品设计上给兑换现金增加了库存限制。 在此基础上形成了秒杀场景,峰值时核心接口 qps 上涨了近 600 倍(几十到几万) ,因此需要进行压测来对系统和 DB

学习android中的Handler机制和由此引发的内存泄露以及解决办法

一、Handler机制以及使用方法          Handler、Looper、Message都是android的异步消息处理机制,异步消息处理线程启动之后,会进入一个无限循环体中,每循环一次从消息队列中取出一个消息,然后回调消息处理函数,执行完成之后,继续进行循环,如果消息队列为空,则线程会阻塞等待。  1   Looper作用:        创建一个MessageQueue,然后进

Vue-观察器(watch)的定义方式引发组件初始值没有渲染成功问题(已解决)

问题描述:在测试环境发现一个问题,打开一张表单的时候,所有字段都成功赋上了值,唯独一个人员组件的值(出差人员)没有带出,而接口返回的数据是正常的,也就是说不是后端接口的问题,是前端组件渲染过程中出了差错。值得一提的是,出差人员这个字段是依据前面字段(“出版完成送出方式”)的值来动态生成的,只有其值为“出差人员带出”,那么“出差人员”这个字段才会生成。 以上就是背景。 在前端调试的过程中逐步

一行超长日志引发的 “血案” - Containerd 频繁 OOM 背后的真相

案发现场:混沌初现 2024年6月10日,本应是平静的一天。但从上午 9 点开始,Sealos 公有云的运维监控告警就开始不停地响。北京可用区服务器节点突然出现大量 “not ready” 告警,紧接着,系统自动触发 004 节点重启,让服务暂时恢复了正常。 就在我以为这只是个小插曲的时候,7分钟后,广州可用区服务器也沦陷了!001 节点不得不重启以求自保。事情似乎并没有那么简单。 “发

php strpos 为什么没找到要用 ===false 做判断

如果这个字符串中没有找到相应的子字符串 就返回false如果这个子字符串位于字符串的开始处 就会返回0为了区分 0 和 false 就必须使用等同操作符 === 或者 !==

mysql单库主从复制引发的异常

mysql主从复制:单库做主从,造成的异常后果 前提: 在一个数据库实例上,有三个数据库 DB_A,DB_B,DB_C,只做了DB_A的从库 问题场景: use DB_A; update DB_B.table set a=1 where id=9; 从库从use DB_A开始写binlog,遇到sql “update DB_B.table set a=1 where id=9;” 会报错,因

python教程(八)之异常(2.引发异常raise)

#实际上,你可以通过语句引发异常,并能自定义异常类 #以此满足你对异常的特殊需求,尽管内置异常已经十分丰富 1.raise语句 raise Exception# Traceback (most recent call last):# File "e:/python项目/基础训练/8.异常-2.引发异常.py", line 4, in <module># raise Excep

Rust 基金会的商标政策更新引发社区争议

Rust 基金会最近更新了其商标政策,引发了社区内的一些争议。 Rust 是一种高性能系统编程语言,拥有庞大的开发者社区。Rust 基金会成立于 2020 年,旨在支持和推动 Rust 语言的发展。该基金会负责管理 Rust 的商标,并制定了商标使用的政策。 根据新的商标政策,Rust 基金会要求所有使用 Rust 商标的项目必须获得许可,并遵守规定的使用准则。这意味着如果一个项目使用 Rus

python in操作引发 TypeError

在看 networkx 源码的时候觉得疑惑,为什么外层 for 要注意 TypeError,里面就不用,同样是 in, 一直纠结 node 是不是有问题,比如 node 不可以被迭代什么的,那么里面应该也可能触发 TypeError 啊, 后来发现 n 若是不可以被哈希的,也会触发,作者目的其实是想针对 n 的性质。 比如: