燕十八

php中的运算符、控制结构

 php中的运算符

1. 赋值运算符
2. 算术运算符
3. 比较运算符
4. 字符串运算符
5. 递增运算符
6. 逻辑运算符(异或运算 xor )
7. 三元运算符
8. 位运算符 (移位运算)
10 . echo中','和'.' 的区别
9. 类型转换
1). 布尔值  --字符串
2). 字符串 -- 数字的转换
3). 字符串-- 布尔值的转换
4). 数字 - - 布尔值的转换
5). 数字 --字符串的转换

控制结构

1. if 单路分支

2. if /else 双路分支,双路分支中if/else 中的2 个代码段,必有且只有一段被执行
if/else if/else if……/else 多路分支

3. switch case ,用来比较判断的变量的多种可能值时便于用。

4. while (表达式){
代码段}

5. do{
代码段;}while(表达式);

6. for(语句1;语句2;语句3){
代码段;}

语句1,先执行 且只执行1次
然后 语句2判断,如为真,则执行 代码段; ,然后执行  语句3;
再语句2判断……循环
直到语句2为假,for结束

代码展示

  1 //==========================================
  2 
  3 //2. 算术运算                                    返回原处
  4 //
  5 //php程序如何进行加减乘除
  6 //依次是+ - 
  7 
  8 
  9 $a = 3;
 10 $b =5;
 11 $c = $a + $b;//这语句话的含义是$a+$b计算结果赋给$c
 12 echo $c,'<br />';
 13 echo $b-$a,'<br />';
 14 
 15 echo $a * $b,'<br />';//计算$a * $b的结果 赋给$c 
 16 echo $b/$a,'<br />';//计算$b/$a的结果,赋给$c 
 17 
 18 //如果是在C语言中,$b,$a,都是整型,因此计算出来的$c也是整型
 19 //在php中,变量的值可以随意改变,而且变量的类型也可以改变。
 20 //
 21 //比如:变量$c是整型,可以突然为之赋一个浮点型值。
 22 //因此php称为动态语言。
 23 
 24 
 25 
 26 
 27 //-----------------------------------------------------
 28 求余就是 取模  运算                        返回原处
 29 在计算机里计算除法的时候,算出来2个结果
 30 
 31 商和余数
 32 
 33 */
 34 $a = 3;
 35 $b = 5;
 36 $c = $b%$a;   // 得1 余2
 37 echo $c,'<br />';
 38 
 39 
 40 //小测试,判断一个数是偶数,还是奇数?
 41 //可以对2 取模,余数是1,则为奇数,如果余数为0,则为奇数
 42 
 43 $d = 3;
 44 $res = $d % 2;
 45 if($res == 1){
 46     echo $d,'是奇数';
 47 }
 48 if($res == 0){
 49     echo $d,'是偶数';
 50 }
 51 
 52 //上初中了,有了负数的概念
 53 
 54 $b = -5;
 55 $a = 3;
 56 echo $b%$a;
 57 $b = -5;
 58 $a = -3;
 59 echo $b%$a;
 60 
 61 //注意:在取模运算的时,
 62 //运算的正负结果,取决于被除数的符号
 63 //结果的符号,和被除数的符号一致
 64 //================================================ 
 65 
 66  // 比较运算符                                    返回原处
 67 // > ,< ,<= ,>= ==,!= ,===(不仅值相等,而且类型也相等),!==
 68 $a = 3;
 69 $b = 2; 
 70 if(3 > 2){
 71 echo '3大于2','<br />';
 72 }else{
 73 echo '3不大于2','<br />';
 74 }
 75  
 76 if($a >= $b){    //  >=  意味着,$a比$b大,或者  $a 等于$b 有一个为真都行,即条件满足 
 77 echo '3大于等于2','<br />';
 78 }else{
 79 echo '3并不大于等于2','<br />';
 80 }
 81 //-----------------------------------------------
 82 
 83 $a = 3;
 84 $b = '3'; 
 85  if($a === $b){   
 86 echo $a,'全等于',$b,'<br />';
 87 }else{
 88 echo $a,'不全等于',$b,'<br />';
 89 }
 90  
 91 //==========================================
 92 
 93 $a = 3;
 94 $b = true; 
 95  if($a == $b){    
 96 echo $a,'等于',$b,'<br />';
 97 }else{
 98 echo $a,'不等于',$b,'<br />';
 99 }
100 //在不同的类型比较时
101 //php程序本身
102 //
103 //会把变量 转换成一致的类型,然后再去比较
104 //
105 //着重记以下转换                 返回原处
106 //1. 布尔值  --字符串
107 //2. 字符串 -- 数字的转换
108 //3. 字符串-- 布尔值的转换
109 //4. 数字 - - 布尔值的转换
110 //5. 数字 --字符串的转换
111 //
112 //以5 ==true 比较为例
113 //的把 整型 ,转成布尔型
114 //
115 //其实有的语言中,根本就没有布尔型,都是拿1,0充当true / false 
116 //0   /   0.0    这两个转换为布尔类型为false 
117 //其他都是true ,负数也是true 
118 
119 
120 
121 
122 //-------------------------------------------
123 //1. 布尔值  --字符串
124 true ---'1'
125 false--- ''
126 
127 //-------------------------------------------
128 //1. 字符串 --数字的转换
129 //从字符串左端开始找数字,直到第一个非数字结束,取出来的这一部分,即是转换后的值
130 //'3q'----3
131 '123asdf'---123
132 'sdfds789'----0
133 
134 $num = 'sdfds789';
135 echo $num + 0; //运算结果是0 
136 
137 //-------------------------------------------
138 //3. 字符串 --布尔的转换
139 //''字符串,'0',这种转换成 false
140 //其他的一概是true
141 
142 
143 
144 if(''==false){
145     echo '空字符串等于false';
146 }else{
147     echo '空字符串不等于false';
148 }
149 
150 echo '<br />';
151 if('0'==false){
152     echo '字符串0等于false';
153 }else{
154     echo '字符串0不等于false';
155 }
156 
157 
158 //-------------------------------------------
159 //4. 字符串 --布尔的转换
160 // 只有整型的0 ,和浮点的0.0 ,转换false
161 //其他 ,甚至负数  ,也转换成true 
162 
163 
164 
165 //-------------------------------------------
166 //5. 数字 --字符串的转换
167 //直接是字面本身    
168 echo '<br />';
169 echo  'aaa'. 2323;
170 
171 
172 
173 //-------------------------------------------
174 //字符串                                                     返回原处
175 
176 //在php中字符串,有一句运算,就是拼接  (echo中','和'.' 的区别)
177 
178 $str1 = 'hello';
179 $str2  = '';
180 
181 $str3 = 'world';
182 echo $str1.$str2.$str3;  
183 echo $str1,$str2,$str3;
184 
185 // 新手的疑问   
186 
187 echo $str1.$str2.$str3;  
188 //这一行是$str1,$str2,$str3在内存中拼接运算
189 //运算出一个'hello world'一个大字符串,
190 //然后echo 之,得到判断的结果  hello world 
191 //==========================================
192 
193 echo $str1,$str2,$str3;
194 //echo 是个语句,负责输出用的
195 //可以通过','分割   一次输出多个变量或值来
196 //
197 //综上:
198 //用' . '是先拼接,再整个输出
199 //用' , ' 是挨个儿把3个变量输出。 
200 //
201 //面试时,会碰到 会问法:
202 //用' . ',用' , '那个输出的快,效率高
203 //
204 //答:当然是 ',' 输出快,效率高 
206 //==========================================
207 //赋值运算符,就是 =  ,作用是,把‘=’右边的值,赋给左边变量       返回原处
208 $a = 3;
209 $b = $c = 5;
210 
211 
212 //==========================================
213 //运算符的运算结果 
214 //
215 //大家想:既然是运算,运算完之后,必须得有一个结果   ---结果值 
216 //3 + 2;  运算结果5
217 //
218 //1. 比较运算符                                               返回原处
219 //注意 :比较去处符返回结果,,只有2个可能   true/false  
220 //
221 //以$a == $b  为例,,要么等,要么不等
222 //要么是真,要么是假
223 //2 ==3;运算结果是:false  
224 
225 //==========================================
226 //2. 字符串运算符                                              返回原处
227 //字符串运算符
228 //$a.$b 
229 //返回结果:拼接后的结果 
230 
231 //==========================================
232 //赋值运算符,返回值是多少呢?
233 $a = 3;
234 if($a = 33){
235     echo 'aa';
236 }else{
237 echo 'bb';
238 }
239 //赋值运算长符的运算结果,就是 =右边的值 
240 $a = $b = $c =88
241 //过程是这样的, $b = 88先进行,赋值后返回88
242 //返回的88,再赋给$c 
243 //同理 ……
244 //最终$a也赋值为88
245 //
246 //
247 //两个难点;
248 //1. 比较运算时,有一个类型转换的问题
249 //2. 凡运算,必有返回值 
250 //比较运算返回布尔值
251 //
252 //赋值运算,返回赋的值本身 
253                               
254 //==========================================
255 //6. 逻辑运算符                                       返回原处
256 //
257 //命题:
258 //真命题,假命题
259 //
260 //逻辑运算符:逻辑或 ||  or 
261 //逻辑与   &&  and 
262 
263 $house = 180;
264 $car = 'BYD';
265 
266 //$res = $house && $car == 'BMW'如果这样写,谁先给结合 ,牵涉到运算优先级的问题
267 //我们推荐,在多个量进行去处的时候,需要先在一块的单元,用()包起来。如:$res = $house && ($car == 'BMW')
268 //这样可以 使程序易读,易理解 ,不容易产生歧义 
269 if($res = $house && $car == 'BMW'){
270     echo '还是可以嫁';
271 }else{
272     echo '再等两年';
273 }
274 
275 逻辑运算的优先级
276 && 的优先级 比 ||277 但是在开发中,不推荐写在一起,应用()包起来
278 $a = 3;
279 $b = 5;
280 if(($a==8)||($b=9)){
281     $a++;
282     $b++;
283 }
284 echo $a,'<br />',$b;
285 
286 //==========================================
287 
288 //逻辑反
289 //一个命题如果是真命题,则其反命题,是假命题
290 //用!表示 291 
292 //==========================================
293 //异或运算  xor                                         返回原处
294 //异或是指,两个条件必须‘一个真’,‘一个假’,才为真
295 
296 $li = '男';
297 $mei = '女';
298 //这个异或表达的是,必须一个为男,
299 if($li == '男') xor ($mei == '男'){
300     echo '可以结婚';
301 }else{
302     echo '法律禁止,请去北欧';
303 }
304 
305 
306 //==========================================
307 //三元运算符                                              返回原处
308 //
309 //条件?返回值1:返回值2
310 //如果条件为真,则返回值1,否则返回值2
311 //
312 //
313 //比如,在网站中判断一个人有没有登陆
314 //如果登陆,用户名不为空,则显示其用户名
315 //如果没登陆,用户名空,则显示游客。。
316 
317 //$user = 'zhangsan';
318 //if(!=''){
319 //    echo $user;
320 //}else{
321 //    echo '游客';
322 //}
323 //
324 //$user = 'zhangsan';
325 //echo $user?$user:'游客';
326 
327 //程序如果没有三元运算符,可以用什么代替?
328 //
329 //可以用if/else代替
330 //三元中是一个简化的写法 
331 //而且效率没有 if/esle高
332 
333 
334 //==========================================
335 //递增,递减运算符                                          返回原处
336 //
337 //就是语言中没有递增,递减,也不会影响我们写程序。
338 //也是一些场景的简化写法 
339 
340 //分析,$b + 1是一个算术运算,算出的结果是3,这个3是一个‘算出结果’,和$b没有关系
341 //这个算出结果,值给了$a
342 //因此,$a为3,$b为2
343 $b = 2;
344 $a = $b +1;
345 echo $a,'~',$b,'<br />';
346 
347 //$b++,这是一个递增运算,去处则必有去处结果,
348 //问题:  $b++的运算结果是什么?
349 //答:$b++,运算结果是$b本身
350 //然后再把$b的值+1
351 //就相当于return $b; $b = $b +1;
352 //$b =1;
353 //$a = $b++;
354 //echo $a,'<br />',$b;
355 //
356 //
357 //==========================================
358 /*位运算符,说白了,就是,二进制运算符                              返回原处
359 //人有10个指头,用10进位,便于计算
360 //
361 //玛雅人,不穿鞋,连脚趾也算上,20进位
362 //进位是多少没关系,关键是方便我们我们使用
363 // 
364 //对于计算机来说,所有的位,都 只有两种状态 0  1
365 //因为百进位上 ,1代表100
366 //10进位上,1代表10
367 //个位,1代表1
368 //
369 //我们知道计算机里的信息,都是以0,1来存储的
370 //一个可以存储0/1单元,称为位bit
371 //
372 //8个位组成一个字节,Byte
373 //字节是计算机里最基本的单位。
374 
375 
376 12 = 8 + 4;
377    =1*2^3+1*2^2+0*2^1+0*2^0
378    =1100
379 5=101
380 但是计算机里,最基本的单位就是字节,有8个位,只用了3个怎么办?
381 答:把用的3个或4个位,写在字节的右边
382 左边的这些位,用0补上。
383 因此,计算机里:
384 12=0000 1100
385 5 =0000 0101
386 
387 
388 12 & 5 = 0000 0100 = 4
389 12 | 5 = 0000 1101 = 13
390 12 ^ 5 = 0000 1001 =9
391 按位运算符
392 &按位且  ,把2个二进制值齐,把1看成true ,把0看成false,然后每个位上都做 并且 的运算。
393 |按位或 , 把2个二进制值齐,把1看成true ,把0看成false,然后每个位上都做  或者  的运算。
394 
395 ^按位异或    把2个二进制值齐,把1看成true ,把0看成false,然后每个位都不一样时做 异或  的运算。
396 
397 
398 提醒大家:计算机是按位算,我们操作,往往直接10进制
399 */
400 //==========================================
401 
402 $a = 12;
403 $a = 0000 1100
404 //按位求反
405 $a = 1111 0011
406 echo ~12
407 //计算机里表示负数,是用补码的规则来计算的
408 //具体这样来计算负数,假设有8位
409 //最高位是1,得出符号是负
410 //
411 //开始补码规则 
412 //计算除符号位之外,其他7位的绝对值
413 //(1)111 0011 =115
414 //然后把   绝对值-2^7 = 115 -128 = -13
415 //
416 //因此:
417 //1000 0001 ---不要想当然是 -1
418 //而是  1-2^7 = -127
419 1111 1111 ---  127-128 = -1
420 1000 0000 ---  0-128 =-128
421 
422 0000 0000 --- 0
423 0111 1111 --- 127
424 
425 //为什么有人问:-128    +127
426 //
427 //直观来理解
428 //-128 ---  0   0 ---  127
429 //位运算,掌握更好,掌握的不熟悉也不要纠结
430 
431 
432 //==========================================
433 //移位运算                                          返回原处
434 
435 5 = 0000 0101;
436 5 << 1; //左移
437 //相当于乘2的效果
438   0000 1010; //得到的结果是10  
439 5 >> 1; //右移
440 0000 0010
441 //相当于除2的效果
442 
443 
444 //==========================================
445 //之前学习了‘量’---变量,常量 
446 //量与量之间,可以运算,运算符
447 //
448 //如果只有量与量与的运算,那么我们学的知识只够做一个计算器
449 
450 //==========================================
451 //想写程序:还得有控制结构
452 //
453 //控制结构,就是条件与逻辑,控制代码的执行顺序
454 //
455 //程序员 是用php  --- 培训 --- 计算机 
456 //如果 --- if
457 //否则如果 ---else if
458 //否则 ---- else   
459 $gender = $_GET['gender'];
460 if(){
461 }else{
462 
463 }
464 //==========================================
465 
466 //有几种控制结构 
467 //答 :  1. 顺序   、  2. 分支  、 3. 循环 
468 //这个3种控制结构 
469 //所有语言都这样                                 返回原处
470 
471 //==========================================
472 // 1. 顺序
473 // 顺序结构就是语句按照你书写的顺序,从前到后顺序执行。
474 // 最容易理解 
475 echo 'a:8点了','<br />';
476 echo 'b:来YY:88354001','<br />';
477 echo 'c:我听懂了','<br />';
478 echo 'd:我开始写博客了','<br />';
479 
480 //==========================================
481 // 2. 分支                                                        返回原处
482 //顾名思义:有分支 ,就像一条大路,走了3岔口,该选择一个走下去了。
483 //最简单的,单路分支 
484 
485 //单路分支 
486 $age = 18;
487 if($age >= 18 ){
488     echo '你已成年';
489 }//这个if中的代码,要么执行,要么不执行
490 //括号中的表达式,如果为真,则执行,否则,不执行
491 -------------------------------------------
492 //双路分支  if /else 
493 $year = 2012;
494 $birth = 1987;
495 $age = $year - $birth
496 if($age > 28){
497     echo '你是中老年';
498 }else{
499     echo '你是有为青年';
500 }
501 //if为真,则代码段1执行
502 //if为假,则代码段2执行
503 //if else 中的两个代码,有且只有一个执行。
504 //-------------------------------------------
505 //多路分支 
506 $age = 34;
507 if( $age <=16 ){
508     echo '中年';
509 } else if($age > 16 && $age <= 28){
510     echo '老年';
511 }else if( $age >28 && $age <=300){
512     echo '其他';
513 }
514 -------------------------------------------
515 //switch 分支语句                                 返回原处
516 
517 $day = 2;
518 if($day == 1){
519     echo  '星期一';
520 }else if($day == 2){
521     echo '星期二';
522 }else if($day == 3){
523     echo '星期三';
524 }else if($day == 4){
525     echo '星期四';
526 }else if($day == 5){
527     echo '星期五';
528 }else if($day == 6){
529     echo '星期六';
530 }else if($day == 7){
531     echo '星期日';
532 }else{
533     echo '不存在';
534 }
535 //对于一个变量的值,有多种可能性,用if / if else 来比较,当然是可以的。
536 //但是,有一种,更简单的分支结构来替换他
537 
538 
539 $day =2;
540 switch($day){
541     case 1:
542         echo '星期一';
543         break;
544     case 2:
545         echo '星期二';
546         break;
547     case 3:
548         echo '星期三';
549         break;
550     case 4:
551         echo '星期四';
552         break;
553     case 5:
554         echo '星期五';
555         break;
556     case 6:
557         echo '星期六';
558         break;
559     case 7:
560         echo '星期日';
561         break;
562     default:
563         echo '其他';
564 }//从上到下,判断$day和case指定的值,是否相等,如果相等,就执行以后的语句,否则就不执行。
565 //因此,一定要用break退出 
566 //如果没用switch case的话我们可以用什么替换?
567 //
568 //答:if / else if else 来替换  ,
569 //
570 //问:switch case ,与,if/esle if/else 相比,各适合什么 样的场合?
571 //switch case 只能判断某变量是否与指定的值相等
572 //
573 //比如:值  1,2,3,4……
574 //但是不能用来判断范围
575 //
576 //而if/ else if /else 可用来判断 范围,甚至更复杂的判断表达式,也可以
577 //而case ,却只能提供一个准备的值,和变量做相等的比较。
578 //如果 需要和几个确认的值比较是否相等,适合用switch\
579 
580 //==========================================
581 
582 //循环结构                                               
583 //编程语言,一般都有for ,   while , do /while 循环
584 //
585 //先看while                                               返回原处 
586 //while(表达式){
587 //    语句; 
588 //}
589 //判断表达式是否为真,如果为真,则执行语句
590 //执行完语句之后,再回到while 开始处,判断表达式是否为真
591 //如果为真……
592 //…………
593 //……
594 //如果假,本次循环结束 
595 
596 $hard = 100;
597 $hit = -1;
598 
599 while($hard >= 30){
600     $hard = $hard + $hit;
601     if($hard >=30){
602         echo '不服','<br />';
603     }else{
604         echo '服了','<br />';
605     }
606 }
607 echo $hard,'服了吧';
608 -------------------------------------------
609 while(){
610 }//  也有一次都不执行的,第一次条件就不成立,直接退出。
611 $hard = 20;
612 $hit = -1;
613 
614 while($hard >= 30){
615     $hard = $hard + $hit;
616     if($hard >=30){
617         echo '不服','<br />';
618     }else{
619         echo '服了','<br />';
620     }
621 }
622 
623 //-------------------------------------------
624 //
625 //如果碰到下面的情况
626 while(true){
627  echo 'haha<br />';
628 }//死循环
629 -------------------------------------------
630 do{                                                返回原处          
631 
632 }while();  
633 //do ,即执行,上来先执行一下语句,然后再去判断
634 //所有,do/while 到至少执行一次
635 
636 $hard = 20;
637 $hit = -1;
638 do{
639     $hard = $hard + $hit;
640     if($hard >=30){
641         echo '不服','<br />';
642     }else{
643         echo '服了','<br />';
644     }
645 }while($hard>=30);
646 
647 //==========================================
648 //for(语句1;语句2;语句3){                               返回原处
649 //    代码段; 
650 //}
651 //语句1,先执行 且只执行1次
652 //然后 语句2判断,如为真,则执行 代码段; ,然后执行  语句3;
653 //
654 //再语句2判断……循环
655 //直到语句2为假,for结束
656 //
657 //-------------------------------------------------------
658 //打印1到100的整数,如果是3的倍数就打印Fizz,如果是5的倍数就打印Buzz
659 //如果是3和5的倍数就打印abcd
660 $i = 0;
661 while(++$i<=100){
662     if($i%15 == 0){ 
663        echo $i,'----abcd----即是3的倍数,又是5的倍数','<br />'; 
664     }else if($i%3 == 0){
665        echo $i,'----FiZZ----3的倍数','<br />';
666     }else if($i%5 == 0){
667        echo $i,'----BuZZ----5的倍数','<br />';
668     }else{
669         echo $i,'<br />';
670     }
671 }
672 -------------------------------------------------------
673 
674 //公鸡 5元1只,小鸡1元3只,母鸡 3元1只
675 //100元买回100只,问公鸡,母鸡,小鸡各多少只?
676 for ($g = 1;$g<=20;$g++){
677     for($m = 1;$m<=34;$m++){
678         $x = 100-$g-$m;
679         if(5*$g+3*$m+$x/3 == 100){
680             echo '公鸡',$g,'只,','母鸡',$m,'只,','小鸡,',$x,'只,<br />';
681         }
682     }
683 }
684 //==========================================
685 //
686 //break 有破坏的意思,直接破坏整个循环语句,不再往下执行了。
687 
688 for($i = 1;$i < 10;$i++){
689     if($i == 6){
690         break;
691     }else{
692         echo $i,'<br />';
693     }
694 }
695 --------------------------------------------------------
696 //continue  有继续的意思,跳出本次循环,继续执行下一次循环
697 for($i = 1;$i < 10;$i++){
698     if($i == 6){
699         continue;
700     }else{
701         echo $i,'<br />';
702     }
703 }
704 
705 --------------------------------------------------------
706 //过收费站,手上有钱100,000元,当钱>50000时,交手上钱数的5%元,当钱数<=50,000时,每次交5000元,问能过几次?
707 for($i=0,$money = 100000;$money >= 5000;){ //看此处,第2个‘;’号后竟然是空//的
708  if($money>50000){
709     $money *= 0.95;
710  }else {
711     $money -=  5000;
712     
713     }
714 $i+=1;
715 echo '第', $i,'过桥后','剩下的钱数为',$money,'<br />';
716 }
717 
718 
719 //如下
720 for(){
721 echo  'haha';
722 //别运行,死循环
723 }
724 
725 
726 */

相关的视频连接:

1. 位运算符 ,移位运算
2.三大控制结构之顺序和分支
posted @ 2012-11-25 14:33  启红  阅读(782)  评论(0编辑  收藏  举报