两个!是为了把非0值转换成1,而0值还是0。(如下表)
! | !! | |
0 | 1 | 0 |
1 | 0 | 1 |
10 | 0 | 1 |
在php持术或其他语言中我们经常会看到感叹号的用法,有一定程序语言基础的朋友都知道单个感叹号的作用是取反的意思,也就是取当前结果的反面,如:
<?php $a=true; var_dump(!$a); ?>
1
2
3
4
|
<?php
$a=true;
var_dump(!$a);
?>
|
$a原来是true取反后$a就变成false了,这种用法在程序中经常见到,但是双感叹号的用法可能就少多了.其实双感叹号也就相当于程序语言中的三元运算($a?$b:$c),如
<?php $a=true; if(!!$a){ echo 'ok'; }else{ echo 'error'; } ?>
1
2
3
4
5
6
7
8
|
<?php
$a=true;
if(!!$a){
echo 'ok';
}else{
echo 'error';
}
?>
|
!!$a返回的是布尔值(true或false),有的朋友可能会问为什么要这么用,直接用常规的方法做不一样吗?其实是一样的,但是作为程序员必须宽泛的了解程序的各种写法,不致于别人写的程序自己看不懂.呵呵,个人看法!