这篇文章主要讲解一下 PHP 使用比较运算符容易出错的地方 $a == $b 等于 TRUE,如果类型转换后 $a 等于 $b.$a === $b 全等 TRUE,如果 $a 全等于 $b,并且它们的类型也相同. var_dump() 返回结果: boolean true 如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换为数值并且比较按照数值来进行. 此规则也适用于 switch 语句.当用 === 或 !== 进行比较时则不进行类型转换,因为此时类型和数值都要比对. 字…
在处理js代码判断真假时经常会这么写. 但fun()可能得到的是数字0,这可不是表示的没有值,但是!js中的数字0就是false,非0就是true. 于是0就被无情的当做false了. 已经被这个坑过N回了,做个记录,以防再被坑. 自己碰到的 if(!$('#id').length){} 从上面我们可以看到,0是false,非0是true 那么我们来看上面的代码 1,if只有是true的时候才能进入方法体, 2,true就是非false 3,就是 非0, 4,那么$('#id').length就…
//点击左边全选选中时,都全选$('.goods_tag_ids_all').on('click',function(){ if($('.goods_tag_ids_all').is(':checked')){ var elements = $('.goods_tag_ids'); for(var i=0; i<elements.length; i++){ if(elements[i].type == 'checkbox'){ if(elements[i].checked==false){ el…
jquery easyui  输入框 禁止输入负数  设置属性data-options="min:0,required:true" <input id="days" type="text" name="DelayDays" value="" class="easyui-numberbox" data-options="min:0,required:true" s…
今天上午在CSDN的论坛里看到有朋友提的问题如下: /** @param maxSize Maximum sum of the sizes of the Bitmaps in this cache */ public LruMemoryCache(int maxSize) { if (maxSize <= 0) { throw new IllegalArgumentException("maxSize <= 0"); } this.maxSize = maxSize; th…
在处理js代码判断真假时经常会这么写. var vale = fun();//从某个地方获取的值. if(!value){ 进入这里表示value为false或不存在 }但fun()可能得到的是数字0,这可不是表示的没有值,但是!js中的数字0就是false,非0就是true. 于是0就被无情的当做false了.…
ret.data[0]._highlight = true iview table表格高亮…
<?php// $wh = 0; //等于整数0,等于字符串'0',等于空字符串,等于空格字符串, 等于空(null),等于字符串('null')// $wh = '0'; //=>等于整数0,0 等于字符串'0'// $wh = ''; //=>等于整数0,等于空字符串,等于空(null)[易错点] //空字符串等于空(null)// $wh = ' '; //=>等于整数0,等于空格字符串,为真 [易错点] //空格字符串为真// $wh = null; //=>等于空(…
在正常的数学逻辑思维中,0.2+0.4===0.6这个逻辑是正确的,但是在JavaScript中0.2+0.4!==0.6这是为什么呢?这个问题也会偶尔被用来当做面试题来考查面试者对 JavaScript的数值的理解程度. 在JavaScript中的二进制的浮点数0.2和0.6并不是十分精确,在他们相加的结果并非正好等于0.3,而是一个比较接近的数字 0.6000000000000001,所以条件判断结果为 false. 那么应该怎样来解决0.2+0.4等于0.3呢? 最好的方法是设置一个误差范…
最近被问到关于js中空字符串是true还是false得问题,一时间没想起来,现在在chrome的console面板上输出代码测试一下. "" == false 结果是true   在js中空字符串与0相等  即空字符串等于false 0 == false  结果是tue   比较的时候 布尔类型的转换成number类型  false 为0  true 为1 “0” == fase 结果是true  字符串准成number Boolean("0") 结果是true …
在php中由于是弱类型语言,不同类型值之间可以隐式转换,使得false,null,”,0,’0′这几个值的比较有些混乱,现总结一下: //相等判断 '' == NULL == 0 == false (相等)array() = 0 == NULL == false (相等)array() <> '' (不相等) //恒等判断//任何两个数比较都不恒等 var_dump(false == FALSE); //bool(true)var_dump(false === FALSE); //bool(t…
php的比较操作符有==(等于)松散比较,===(完全等于)严格比较,这里面就会引入很多有意思的问题. 在松散比较的时候,php会将他们的类型统一,比如说字符到数字,非bool类型转换成bool类型,为了避免意想不到的运行效果,应该使用严格比较.如下是php manual上的比较运算符表: 例子        名称         结果 $a == $b    等于      TRUE,如果类型转换后 $a 等于 $b. $a === $b   全等      TRUE,如果 $a 等于 $b,…
转载来自: http://www.cnblogs.com/showker/archive/2013/09/01/3294279.html http://www.binarytides.com/php-manage-multiple-cronjobs-with-a-single-crontab-entry/ In many php applications there are multiple tasks that need to be run via cron at different time…
http://www.binarytides.com/php-manage-multiple-cronjobs-with-a-single-crontab-entry/ In many php applications there are multiple tasks that need to be run via cron at different times. In a typical application you may be doing the following tasks via…
PHP 的整数和字符串比较是 "松散比较" var_dump('dev' == 0); bool(true) switch switch 在进行比较的时候,只是对值进行比较("松散比较") $type = 'abc'; switch ($type) { case 0: $value = 'case 0'; break; case 'abc': $value = 'case abc'; break; } value 的取值为 'case 0'…
0x01 前言 PHP 是一门弱类型语言,不必向 PHP 声明该变量的数据类型,PHP 会根据变量的值,自动把变量转换为正确的数据类型. 弱类型比较,是一个比较蛋疼的问题,如左侧为字符串,右侧为一个整数,只不过左侧与右侧内容完全相等. <?php var_dump(null ==false); //bool(true) var_dump('aa'==0); //bool(true) ?> 0x02 Magic Hash PHP在处理哈希字符串时,会利用”!=”或”==”来对哈希值进行比较,在进…
另类的写法有惊喜 我们在阅读某些源代码的时候会发现有一种另类的写法,比如 //异常写法 if(false == $result)   //正常写法 if($result == false) 其实这是一种很聪明的写法,它可以很大程度上杜绝手误造成的严重bug. 假如我们在正常方法中把 == 误写成 = ,那么if($result = false) 就会恒定返回true,导致在实际运行中产生未知的Bug,如果使用异常的写法出现手误变成时if(false = $false) ,编辑器会抛出一个erro…
<?php function table($row,$col,$c){ $str= "<table border=1>"; for ($i=0; $i <$row ; $i++) { //$i表示行 0~9 $color=$i % 2==0?"#ffffff":$c;//三元运算符 $i % 2==0为true 执行$color="#fff" 否则 执行 $color="#ccc"; $str=$str…
编码安全指南 编程本身就应该是一门艺术,而安全编程更是一种在刀尖上舞蹈的艺术,不仅要小心脚下的锋利寒刃,更要小心来自网络黑客或攻击者的狂轰乱炸. - by code artist 1.hash比较的缺陷 经过试验发现,当Hash值以"0e"开头且后面都为数字,当和数字进行比较的时候总会被判断和0相等 例如: var_dump('0e1327544' == 0); // bool(true) 当密码被md5计算后,可能会以"0e"开头,下面这个例子可以绕过密码验证.…
0x01  前言 这一次的比赛web题只做出来3个,也是菜的抠脚.. 0x02 web-签到题   php弱类型 查看源码,发现是代码审计,要求用户名必须为字母,密码必须为数字,登陆页面可以用开头为0e的md5值绕过,下面列出一串0e开头的md5值 <?php var_dump(md5('240610708') == md5('QNKCDZO')); //bool(true) var_dump(md5('aabg7XSs') == md5('aabC9RqS')); //bool(true) v…
lottery 题目分析 题目给了一个彩票网站,经过页面的探索,没有发现明显漏洞,进行目录扫描,发现该站存在.git文件 猜测存在源码泄露,使用githack利用: 获得网页源码,进行源码分析 源码审计 // api.php function buy($req){ require_registered(); require_min_money(2); $money = $_SESSION['money']; $numbers = $req['numbers']; // 获得用户输入数字 $win…
null在关系运算中的坑 & 关系运算符的隐式转换问题 注意: 比较运算符 和 相等运算符 的 ECMAscript 语法实现不同. 比较运算符 和 相等运算符 对数据进行了隐式转换, 相当于调用了 Number(), '' false 转换为 0: true 转换为 1. console.log('' >= 5); // false console.log('' < 5); // true 相当于 0 < 5 console.log('' == 0); // true cons…
0为false,1为true. bool表示布尔型变量,也就是逻辑型变量的定义符,以英国数学家.布尔代数的奠基人乔治·布尔(George Boole)命名. 布尔型变量bool的取值只有false和true,0为false,非0为true.(例如-1和1都是true).…
if ('0') alert("'0' is true");  if ('0' == false) alert("'0' is false");结果是,两次都 alert 了!那么 '0' 到底是 true 还是 false 呢? 答案是:在js做比较的时候,有这样的三条规则:如果比较的两者中有boolean,会把 boolean 先转换为对应的 number,即 0 和 1(false是0,1是true)如果比较的双方中有一方为number一方为string,会把…
1 1 1 === 全相等(全部相等) ==  值相等(部分相等) demo: var x=0; undefined var y=false; undefined if(x===y){ console.log("all equal!") }else if(x==y){ console.log("just value equal!") }else{ onsole.log("not at all equal!") } VM3163:1 just va…
× 目录 [1]总括 [2]算术运算符 [3]赋值运算符[4]位运算符[5]比较运算符[6]错误控制[7]逻辑运算符[8]字符串连接[9]数组运算符 前面的话 运算符是可以通过给出的一或多个表达式来产生另一个表达式的东西.与javascript类似,php也拥有类似的运算符语法,本文将详细介绍php运算符 [注意]关于javascript运算符语法移步至此 总括 运算符可按照其能接受几个值来分组.一元运算符只能接受一个值,例如 !(逻辑取反运算符)或 ++(递增运算符). 二元运算符可接受两个值…
运算符 PHP运算符可以根据操作数的个数分为一元运算符.二元运算符.三元运算符.一元运算符例如!(取反运算符)或++(加一运算符),PHP支持的大多数运算符都是这种二元运算符,例如+.-.*./等算数运算符,而三元运算符只有一个(?:).另外按运算符的功能去分类,可以分为:算术运算符.字符串运算符.赋值运算符.比较运算符.逻辑运算符.位运算符和其他运算符. 算数运算符 运算符 含义 书写格式 + 加法运算 $a+$b - 减法运算 $a-$b * 乘法运算 $a*$b / 除法运算 $a/$b…
如何判断两个数组相等呢?其实很简单,用 == 或者 === 就可以了 php手册里说明如下, 例子 名称 结果 $a + $b 联合 $a 和 $b 的联合. $a == $b 相等 如果 $a 和 $b 具有相同的键/值对则为 TRUE. $a === $b 全等 如果 $a 和 $b 具有相同的键/值对并且顺序和类型都相同则为 TRUE. $a != $b 不等 如果 $a 不等于 $b 则为 TRUE. $a <> $b 不等 如果 $a 不等于 $b 则为 TRUE. $a !== $…
运算符优先级 每种编程语言都有运算符,运算符要学会灵活使用. 运算符拥有不同的优先级和结合方向. <?php var_dump(1 <= 1 == 1); // true var_dump(true ? 0 : true ? 1 : 2); // 2 $a = 1; var_dump(++$a + $a++); // may print 4 or 5 在需要的时候使用括号,可以增强代码的可读性. 算术运算符 取模运算符的结果和被除数的符号相同. 赋值运算符将原变量的值拷贝到新变量中,有个例外就…
一:算数运算符 +(加).-(减).*(成)./(除) %(取模,求余的意思) <?php $a=7/3; echo $a; //2.3333333333333.因为float类型的最大精度为14位 //需求:判断2个数是否能整除 $a=55; $b=3; if($a%$b==0){ echo "ok"; }else{ echo "no"; //输出no } ?>  ++.--(我们的++和--也分前后) <?php $a=88; $a++; //…