新手对PHP if 判断式语句可能犯的拼写错误

 写这篇的主因是上週追一个 typo error, 但是这是正确标準语法, 不会產生 syntax error, 所以不好追, 再此做个记录, 之后可以先 grep 看看是不是这种 typo error 造成的. XD

PHP if 判断式可能犯的拼写错误

if 判断式 写法, 有一个很常见的, 但是那不是 typo error, 也很常这样子写的, 是 “=”、”==”、”===”.
范例
View Raw Code?

<?php
if ($a = ‘a’)
echo ‘这行会印出来, 因為 $a = “a”, 而 a 不是 0 / false, 所以会恆為 true’;
if ($a == ‘b’)
echo ‘这行不会被印出来, 因為 $a 等於 “a”, 不等於 “b”‘;
if ($a === true)
echo ‘这行不会被印出来, 因為 $a 型态不是 true. (当然主要是值不对, 但是在此先不讨论)’;
?>

当程式裡面, 不小心把 等号删掉一个, 就会引发很大的悲剧. (syntax 检查不出来, 是正确写法)

上述那个是常见的, 也很难追的, 但是下述的是写第一次遇见的~ (把 “!=” 打成 “=!”, 这个应该 9成9 是 typo error.)
View Raw Code?

<?php
$a = ‘b’;
if ($a != ‘a’)
echo $a; // 这行会印出 ‘b’, 这是本来要做的事情.
// 当 != 打成 =! 的话, 就会造成悲剧.
if ($a =! ‘a’)
echo ‘这行不会被印出来’;
var_dump($a); // 印出 false
?>

问题追踪拆解

一步一步分解 $a =! ‘a’
$a = !’a’ // ‘a’ 的 boolean 是 true, !true = false.
$a = false
所以 if ($a = false), 就永远不会落入此行, syntax 也是合法的.

註: 以后 Debug 除了 “=”、”==”、”===” 外, 要多注意看看 “!=” 和 “=!” 的写法.

时间: 2024-08-16 17:51:11

新手对PHP if 判断式语句可能犯的拼写错误的相关文章

多线程-小白问题,这个if判断式该写在我代码的哪里?

问题描述 小白问题,这个if判断式该写在我代码的哪里? 直接上图了神们! 解决方案 if肯定要放到for循环内:只有for循环中num值在改变. 解决方案二: [边做项目边学Android]小白会遇到的问题--This Android SDK requires Android Developer Toolkit version 23.0.0 or above 解决方案三: 你这是赋值,不是等于 解决方案四: 逻辑运算是两个封号的,所以这样写编译器就报错了. 解决方案五: 等号是负值,等等号才是比

shell编程中if [[ ! ${a} =~ ^[0-9]+ ]]条件判断式如何工作的?

问题描述 shell编程中if [[ ! ${a} =~ ^[0-9]+ ]]条件判断式如何工作的? if [[ ! ${a} =~ ^[0-9]+ ]]这个语句具体是怎么工作的?我只知道这个好像是如果变量a不是以数字开头就执行if语句,但是特别的: =~是什么意思? ^[0-9]+ 是什么意思?另外这个判断使用的是扩展正则表达式? 解决方案 这里只有^[0-9]+是正则表达式,表示一个数字,别的都不是正则. 解决方案二: 只是原样的字符 解决方案三: =~意思是匹配后面的正则式,^是匹配开头,

新手求助,关于优化switch语句

问题描述 新手求助,关于优化switch语句 case R.id.button_0: case R.id.button_1: case R.id.button_2: case R.id.button_3: case R.id.button_4: case R.id.button_5: case R.id.button_6: case R.id.button_7: case R.id.button_8: case R.id.button_9: edit_input.setText(editText

浅谈新手SEOER如何简单判断关键词热度

选取关键词对于网站本身来说很重要,这个站长都很清楚,尤其是一些优化的公司每天都要优化不同行业的网站,客户会给你一些词让你优化到什么程度然后付费,但是客户不了解SEO这个行业的规则,不是客户说优化那个词你就要优化那个词,SEOER要学会分析这个词的难度是属于那种类型的,如果太热的词一个小的团队在几个月是不可能优化上去的,比如客户让你优化手机这个词,那么作为SEOER不能优化这个词这个词太笼统了,一定要和客户好好沟通,今天白癜风早期能治愈吗和大家一起分享一下新手SEOER如何简单判断关键词热度? 一

使用STL仿函数和判断式来降低复杂性并改善可读性

标准模板库(STL)包含C++程序员不可或缺的许多东西.它还有力证明了C++的概念化编程能力.STL的概念包括容器(container).范围(range).算法(algorithm)以及仿函数(functor).本文着重讲解仿函数,它本质上是一个类,但通过重载operator(),所以行为与函数相似.这个概念在STL之前便已存在,STL只是从另一个角度来看待它.继续阅读本文,你就能体会到个中三味.   算法.范围和函数 STL以泛型方式来处理函数.假如一个参数的行为应该与函数相仿,STL算法就

新手站长如何把病毒式营销做到极致?

摘要: 网络营销的方式是无止境的,但是真正被站长们运用的方式也是寥寥无几的,站长们几乎把论坛营销,软文营销,博客营销这样的方式到烂掉了.但这样的营销方式是不是真的能给站长 网络营销的方式是无止境的,但是真正被站长们运用的方式也是寥寥无几的,站长们几乎把论坛营销,软文营销,博客营销这样的方式到烂掉了.但这样的营销方式是不是真的能给站长们带来很好的利益,新手站长们开始接触网络营销可能没那么多的钱可以烧,所以他们需要寻找新颖的营销方式.病毒式营销未免不是一种新的方式,但很多站长们不敢使用这样的方法,用

php+MySQL判断update语句是否执行成功的方法_php技巧

update语句是PHP+MySQL中常用的操作,判断update语句是否执行成功是其中非常重要的一个环节.本文就以实例展示了php+MySQL判断update语句是否执行成功的方法.分享给大家供大家参考之用.具体方法如下: 代码一: $rs=MySQL_query($sql); if(mysql_affected_rows()) echo "sql执行成功"; else echo "sql执行失败"; 代码二: <?php /* 连接数据库 */ mysql

STL - 判断式(Predicate) - 单参判断式(Unary Predicate)

Predicate是一种特殊的辅助函数,它会返回Boolean,常常被用来作为排序或者查找准则. Predicate会有1个或者2个操作数.   Unary Predicate(单参判断式) 例子: 我们先写一个算法,如下: MathUtil.h #ifndef _Math_Util_H_ #define _Math_Util_H_ using namespace std; class MathUtil { public: static bool isPrime(int number); };

STL - Predicate - Binary Predicate(双参判断式)

Binary Predicate(双参判断式)的用途是:比较两个参数的特定属性   我们先建一个领域模型类: Person.h #ifndef _Domain_Models_Person_H_ #define _Domain_Models_Person_H_ #include <iostream> #include <string> #include <deque> using namespace std; class Person { private: string