本帖最后由 小鲁哥哥 于 2017-4-27 18:42 编辑
【济南中心】PHP课程同步笔记day10:PHP运算 算术运算符:+、-、*、/、%、++、-- 如果算术运算符左右的操作数不是数值型,首先要转成数值型,然后再进行运算。 $a = “10px”; $b = “20px”; $c = $a * $b; Var_dump($c); //int(200) 除号:如果左右两个操作数都是整数,且能除尽,则结果为int;如果除不尽,则结果为float $a = “10”; $b = “3”; $c = $a /$b; Var_dump($c); //float(3.333333) 取余:两个数相除取除数。可以用来判断两个数是否能除尽。如果除数为0,则能除尽。要求左右两个操作数,必须是整数,如果不是整数,则去掉小数。运算结果的符合与被除数一致。如果被除数为正,则结果为正。如果被除数为负,则结果为负。结果符号与除数无关。 $a = 10; $b = 2.93; $c = $a % $b; Var_dump($c); //int(0) ++ 加1运算符(自加1)。有两种用法:一是作前缀(++$n),二是作后缀($n++). 1)如果单独使用,则$n++和++$n的结果一样 $a = 10; $a++; //展开后$a = $a+1; Var_dump($a); //11 Echo “<hr />”; $a = 10; ++$a; //展开后$a = $a+1 Var_dump($a); //11 2)如果混在其他表达式中,则$n++和++$n的结果 就不一样 $a = 10; $b = $a++; //先赋值再加1 Var_dump($a,$b); //int(10),int(10) Echo “<hr />”; $a = 10; $b = ++$a; //先加1再赋值 Var_dump($a,$b); //int(11),int(11) $a = 10; Echo $a++; //先输出变量$a,然后$a+1 Echo “<br />”; Echo $a; //$a=11 $a = 10; Echo $a = $a+++2; Echo “<br />” Echo $a; 字符串运算符:.和.= “.”可以连接左右两个字符串或变量。 如果左右有一个整型,则会报错,如果想连接需要给整数加引号 如果是变量,则系统会自动给其加引号 以下TRUE和NULL当成常量来看待。TRUE常量的值为”1”,而NULL常量的值为”” $a = 200; Var_dump(“100”.”abc”.$a.TRUE.NULL); //string'100abc2001' “.=”先连接再赋值。 “.=”是上下连接,上行变量的值,与该行剩余的部分连接在一起。 $a =200; $a .=300; $a .=”school”; Var_dump($a); //”200300school” 赋值运算符:=、+=、-=、*=、/=、%= “=”赋值号。将右边的运算结果,赋给左边的变量。左边不能运算,左边只能是变量的名称。如$a = 10+20; “+=”先加后等(执行算术的加法运算)。 要求左右两个操作数必须是数值的,如果不是数值要转成数值再运算。 $a +=20; //展开后$a = $a+20 $a = true; $a +=”abc”; //$a = $a+”abc” $a = true +”abc” $a = 1+0 =int(1) Var_dump($a); //int(1) 实例:表格隔行变色 //实例:表格隔行变色 [HTML] 纯文本查看 复制代码 $str = “”;
$str .=”<table width=’500’ border=’1’ align=’center’>”;
$str .=”<tr>”;
$str .= “<th>编号</th>”;
$str .= “<th>新闻标题</th>”;
$str .= “<th>发布时间</th>”;
$str .=“</tr>”;
$i = 1;
While($i<=100){
//如果是偶数行,则添加bgColor属性
If($i %2 ==0){
$str .= “<tr bgColor=’yellow’>”;
}else{
$str .=”<tr>”;
}
$str .=”<td> </td>”;
$str .=”<td> </td>”;
$str .=”<td> </td>”;
$str .=”</tr>”;
++$i;
}
$str .=”</table>”;
Echo $str; 比较运算符: >、>=、<、<=、==、!=、===、!== 比较运算符的运算结果,一定是一个布尔值。 “=”赋值号 “==”如果左右两个操作数的值一样,则结果为TRUE;否则为FALSE “===” 既比较类型,还有判断值是否一样。如果类型和值都一样,则结果为TRUE,否则结果为FALSE。 1.字符串比较 i. “ab”>”ac”比较大小 如果两个字符串相比较,比的是每个字符的ASCII码。从左到右,一个一个来比较,如果某个位上的字符ASCII值大于另一个位上ASCII值,则直接确定结果。”b”的ASCII值为98,”c”ASCII值为99,所以”ab”<”ac” ii. “ab” > “10”比较大小 这里的”10”也是字符串,同样也是要进行比较ASCII码的值。”a”=》97,”1”=>49,所以”ab”>”10” iii. “河南省”>”河北省” 比较结果 如果两个字符都是汉字,则按拼音的先后顺序比较 iv. 10>”abc”比较 如果一个操作数是普通字符,另一个位整型,则需要将另一个转化为整型进行比较。”abc”=>0 所以10》”abc” v. 20>true的比较 如果一个操作数是整型,另一个操作数是布尔值,因为布尔值优先级高,因此将整型转为布尔型再进行比较 vi. True >NULL的比较 如果一个操作数是NULL,另一个操作数是布尔型,因为布尔值优先级高,因此将NULL转为布尔值,为FALSE.TRUE>FALSE vii. “120” > “100” 如果两个操作数都是数值字符串,先转成数值,再比较 2.字符串比较的一般规则 i. 如果一个操作数是布尔,则另一个操作数转成布尔,再比较(优先级最高) ii. 如果一个操作数是整型,则另一个是字符串,则转成整型,再比较 iii. 如果两个操作数都是普通字符串,则按ASCII码进行比较。a>A>1 3.chr()和ord() i. Chr()返回指定的字符。如:chr(97) = “a” ii. Ord()返回指定的字符的ASCII码值(10进制)。如:ord(“a”) =97 逻辑运算符:&&、||、! 逻辑运算符的运算结果是一个布尔值。 逻辑运算符左右的操作数必须是布尔值,如果不是,要转成布尔值。如:100&&”abc” “&&”逻辑与(并且关系)。左右两个操作数都为TRUE,则总结果为TRUE;如果一个为FALSE,则结果为FALSE 如果左边操作数为FALSE,则结果为FALSE. 如果左边操作数为TRUE,还要看右操作数是否为TRUE. 实例:判断一个人的年龄是否可以当兵(18=<x<=25) [HTML] 纯文本查看 复制代码 1)获取地址栏中输入age参数的值
If(!empty($_GET[‘age’])){
$age = $_GET[‘age’];
//判断年龄是否合法
If($age>=18 && $age<=25){
Echo “你的年龄符合当兵”;
}else{
Echo “你的年龄超出了范围”;
}
}else{
Echo “非法输入”;
} “||”逻辑或(二选一) 如果左右两个操作数,有一个为TRUE,则结果为TRUE . 如果左边操作数为TRUE,则右边操作数不再计算。 如果左边操作数为FALSE,则才会计算右边的操作数 实例:闰年判断 If(isset($_GET[‘year’])){ $year = $_GET[‘year’]; //闰年判断 If($year%4 ==0 && $year%100!=0||$year%400==0){ //如果是闰年,执行的代码 Echo “{$year}是闰年”; }else{ //如果是平年,执行的代码 Echo “{$year}是平年”; } }else{ Echo “请在地址栏输入一个合法的年份”; } 条件(三元)运算符 一元运算符:只有一个操作数。如:(int)$a、(string)$a、!$a、$a++等 二元运算符:左右有两个操作数。如:+、-、*、/、%、&&、||、=、+=、-= 三元运算符:就是有三个操作数。 语法格式:表达式1?表达式2:表达式3 语法格式:条件判断?结果1:结果2 实例:求两个整数的最大值 [HTML] 纯文本查看 复制代码 $a = 100;
$b = 20;
Function getA($num){
Return $num;
}
$max = $a>$b ?getA($a):$b;
Echo “最大值为:$max”; 位运算 1.位运算介绍 计算机底层的数据的运算,都要转成二进制,才能进行运算。 位运算就是指内存中二进制对应位进行运算。 位运算,一般都看成是一个字节(8位二进制)参与运算,不够8位前面补0 位运算要求左右运算数,必须是整数,才能进行位运算。 2.按位与(&) 按位与(&):两个整数的对应位进行按位与运算。 运算的原则:如果左右两个整数的二进制对应位,都是1的话,则结果为1,否则为0. 举例:6&5 =4
将(100)2转成10进制:(100)2=1*2^2+0*2^1+0*2^0 = 4+0+0 = 4
3.按位或(|) 按位或(|):两个整数的对应位进行按位或运算。 运算的原则:如果左右两个整数的二进制对应位,只要有一个是1,则结果为1,否则结果为0. 举例:6|5 =7
将(111)2转成10进制:(111)2 = 1*2^2+1*2^1+1*2^0 = 4+2+1=7
4.按位异或(^) 按位异或(^):两个整数的对应位进行按位异或运算。 运算的原则:如果左右两个整数的二进制对应位,不同时结果为1,相同时为0 举例:6^5 = 3
将(11)2转成10进制:(11)2=1*2^1+1*2^0= 2+1=3
5.左移运算(<<) 按位或(<<):将左侧操作数向左移动多少位,移动的位数由右侧运算数来表示。、 运算的原则:向左移出的部分将消失,如果不够8位,右边补0 注意:如果一个字节的第1位是1的话,向左移位,该1不会消失,将产生第二个字节。 举例:6<<2 =24
将(11000)2转成10进制:(11000)2=1*2^4+ 1*2^3 = 16+8=24
6.右移运算(>>) 按位或(>>):将左侧操作数向右移动多少位,移动的位数由右侧运算数来表示。 运算的原则:向右移出的部分将消失,如果不够8位,左边补0. 举例:6>>2=1 错误控制运算符(@) @可以用来屏蔽错误。@用于屏蔽的表达式必须要有一个确切的值 @可以用在:变量名前、常量名前、函数调用前、某个运算表达式之前。 @不能用在结构语句之前:if、while、dowhile、for、foreach等 @不能用在函数定义之前,也不能用在类定义之前。
|