php学习之------[运算符相关概念]
<?php /*运算符号(PHP)操作符号 * * 按运算符号功能分为: * 一、算术运算符 + - * / % ++ -- * 二、字符串运算符 . 连接运算符 * 三、赋值运算符 = += -= *= /= %= .= * 四、比较运算符 > < >= <= == === != <> !== * 比较运算符---条件运算符---关系运算符 * 比较后的结果只有一种:boolean true false * === 比较时不仅要求内容相同,也要求类型相同 * !== 比较时内容不相同,也要求类型不相同 * 五、逻辑运算符 &&或and ||或or !或not * 逻辑运算符只能操作bool型的值,返回的也是bool型的值 * 六、位运算符 & | ^ ~ << >> >>> * 七、其他运算符 ? : `` @ => -> :: & $ * `` 用来执行操作系统内核 * @ 用来屏蔽掉错误信息 * 建议使用“()”改变表达式的优先级别 * * % 有两个目的:整除运算;控制范围,不要用小数,也不要用负数 * % 会吧运算符两边的数转为整数后再进行整除求余。 */ //用 %符号判断闰年 $year=2011; if(($year%4==0 && %year%100!=0) || $year%400=0) { echo "run nian"; } else { echo " not run nian"; } // ++ --符号的使用 $a=10; $a++; //$a=$a+1; 先用变量,再自增1 ++$a; //$a=$a+1; 先自增1,在用变量 $a--; //$a=$a-1; 先用变量,再自减1 --$a; //$a=$a-1; 先自减1,再用变量 echo $a; //结果为10 //++ -- 运算的区别 $a=10; $b=$a++;//b=10,a=11 $c=--$b;//c=9,b=9 $d=$c++ + ++$c; //d=20,c=11 $e=$d-- - --$d; //d=18,e=2 echo $d; //字符串运算符 . 的使用 $name="tom"; $age=27; $height=1.75; echo "我的名字是:{$name}我的年龄是:{$age}我的身高是:{$height}米<br>"; echo '我的名字是:'.$name.'我的年龄是:'.$age.'我的身高是:'.$height.'米'.'<br>'; echo "\$age=".$age; //$age=27 echo "我的名字是:{$name}我的年龄是:{$age}我的身高是:{$height}米<br>";//赋值运算符的使用 $a=10; $a+=10; //$a=$a+10; $a-=10; //$a=$a-10; $a*=10; //... $a/=10; //... $a%=10; //$a=$a%10; $a.="abc";//$a=$a."abc"; echo $a; $str='<table>'; $str.='<tr>'; $str.='<td>'; $str.='</td>'; $str.='</tr>'; $str.='</table>'; echo $str;//输出一个表格 //比较运算符 var_dump(15>6);//返回 bool(true) $a=15; if(15==$a) { echo "a=15"; } else { echo "a!=15"; } //逻辑运算符的使用 var_dump(true && true);//true var_dump(true && false);//false var_dump(true || false);//true var_dump(!true);//false var_dump(!false);//true //判断用户名密码 $username="admin"; $password="123456"; $email="290080604@qq.com"; if($username=="admin" && $password="123456") { echo "用户名密码正确"; } if($username=="" || $password=="" || $email=="") { echo "一个都不能为空"; } //位运算符 $a=20; //00010100 $b=30; // 00011110 /* * 20 00010100 * 30 00011110 & *----------------------------------- * 00010100 * */ $c=$a & $b; echo $c; /*补充,& | 也可以用做逻辑运算 * &&和||的 短路问题: * &&在作运算时,如果前面的数为false,则后面是否为true,整个表达式都为false,所以就不去执行后面的操作数; * ||在作运算时,如果前面的数为true,则后面的数是否为false,整个表达式都为true,所以就不去执行后面的操作数; * 然而,& 或者 | 在作运算时,两边都会被执行 */ $a=10; if($a>5 || $a++<100){} echo $a;//输出10 $b=10; if($b>5 | $b++<100){} echo $b;//输出11 /* 位的概念:一个位是由8个二进制数组成的(例00000000), 一个字节由8个位组成,那么就有32个二进制数。 原码:最高位 用0表示正数,1表示负数 +7 00000111 -7 10000111 反码:一个数如果为正,则它的反码与原码相同; 一个数如果为负,则符号位为1,其余各位是对原码取反; +7 00000111 -7 11111000 +0 00000000 -0 11111111 补码:一个数如果为正,则它的补码与反码与原码相同 一个数如果为负,则它的补码=反码+1,去掉最高位的溢出位 -7 原码 10000111 反码11111000 +1 补码11111001 已知一个负数的补码,把它转换为十进制数。 1.先对各位取反 2.将其转换为十进制数 3.加上负号,再减去1。 例:补码11111010 取反00000101 4+1=5 -5-1=-6 位运算符: & 按位与 |按位或 ^按位异或 ~按位取反 例: 按位与 01101101 &00110111 00100101 结论:只有1 1为1。 按位或 01101101 |00110111 01111111 结论:只有0 0为0。 按位异或 01101101 ^00110111 01011010 结论:只有1 0或0 1时为1。(也可以理解为处于不同状态为1(真)) 按位取反 ~00110111 11001000 结论:将0变1,1变0 移位运算符: 左移:<< 带符号右移:>> 无符号右移:>>> 例:数 x x<<2 x>>2 x>>>2 17 00010001 01000100 00000100 00000100 -17 11101111 10111100 11111011 00111011 结论:正数左右移动都补0,负数左移补0,带符号右移补1,不带符号补0 */ //其他运算符的运用 $a=10; $b=$a>5 ? $a : 5;//三元运算符,如果成立$b=$a否则$b=5 echo $b; //用``来执行操作系统shell命令 $str=`ipconfig /all`; echo '<pre>'; echo $str; echo '</pre>'; ?>
代号极光
出处:http://zizhuyuan.cnblogs.com
个人博客:http://www.zizhuyuan.net
本文版权归作者(代号极光)、紫竹园和博客园共有,欢迎转载,但请在文章明显位置给出原文连接,否则保留追究法律责任的权利。