注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

早衰男的巢

大音希声 道隐无名

 
 
 

日志

 
 

php.boolean: to be or not to be .. 这是个操蛋的question.  

2014-04-09 15:40:45|  分类: PHP |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
php对变量类型的指定一般情况下不太严格,只要能转换的会自动适配,这是被其他语言的coder鄙视php弱智低能的原因之一吧...
直到今日使用 is_bool() .... 嗯,对于 0 / 1 是不被认为是 Boolean的。详细见以下的演示代码

$a0 = false; //标准的boolean
$a1 = true;
$b0 = 0; //等值数字
$b1 = 1;
$b2 = 2; //这个不是
$c = "i am string";

printf("A:%b,%b; B:%s,%s,%s; C: %s。",$a0,$a1,$b0,$b1,$b2,$c);

echo "<br/>".(is_bool($a0)?"a0 isbool":"a0 nobool"),
"<br/>".(is_bool($a1)?"a1 isbool":"a1 nobool"),
"<br/>".(is_bool($b0)?"b0 isbool":"b0 nobool"),
"<br/>".(is_bool($b1)?"b1 isbool":"b1 nobool"),
"<br/>".(is_bool($b2)?"b2 isbool":"b2 nobool"),
"<br/>".(is_bool((bool) $b0)?"(bool)b0 isbool ".(bool) $b0:"(bool)b0 nobool"),
"<br/>".(is_bool((bool) $b1)?"(bool)b1 isbool ".(bool) $b1:"(bool)b1 nobool"),
"<br/>".(is_bool((bool) $b2)?"(bool)b2 isbool ".(bool) $b2:"(bool)b2 nobool"),
"<br/>".(is_bool($c)?"c isbool":"c nobool");

输出结果

A:0,1; B:0,1,2; C: i am string。
a0 isbool
a1 isbool
b0 nobool
b1 nobool
b2 nobool
(bool)b0 isbool 
(bool)b1 isbool 1
(bool)b2 isbool 1
c nobool


可以用 (bool) 来cast 但,还是要对值约束在0,1 之间才行,否则 (bool) 2、(bool) -1什么的 也会等效为 "true"。
  评论这张
 
阅读(465)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018