【二】php 字符串操作及三大流程控制
字符串操作:
- trim:去除字符串开始位置和结束位置的空格
- ltrim:去除开始处的空格
- rtrim:去除结束处的空格
- strtoupper:将字符串转换为大写
- strtolower:将字符串转换为小写
- ucfirst:如果第一个字符是字母,就将该字符转为大写
- ucwords:将字符串的每个单词的第一个字母转为大写
- addslashes、stripslashes:格式化字符串(转义)
- explode:将字符串分割成数组
- join、implode:将数组组合成字符串(value值)
- strtok:一次只从字符串去除一些片段
$name="hello dsa"; $newarr=strtok($name,' '); //每次取一段,需要while循环 全部取出 while($newarr !=false){ echo $newarr; $newarr=strtok(" "); }
- strsub:截取字符串
$str="hello word and cmf"; //start不包含空格 //$str=substr($str,1); //ello word and cmf.从下标1开始的整个字符串 $str=substr($str,-9); //d and cmf.从-9的绝对值开始的整个字符串 //length包含空格 //$str=substr($str,0,7); //hell。从下标0开始的4个字符 //$str=substr($str,2,-10); //llo wo.从下标2开始到倒数第10个字符 var_dump($str);
- strlen:获取字符串的长度
- strstr、strchr、strrchr、stristr:在字符串中查找字符串
- strpos:查找字符串出现的首次出现的位置
- strrpos:查找字符串最后出现的位置
- str_replace:替换字符串的某些字符
- substr_replace:替换字符串的某些字符
$test="hello world"; echo str_replace('he','cmf',$test); //把he替换成cmf echo substr_replace($test,'cmf',4); //从第4个字符到最后一个字符,替换成cmf
流程控制:
1.顺序控制---不加控制的流程,默认按照顺序来执行你编写的代码
2.分支控制--有选择的来执行代码
- 单分支
- 语法:if(条件表达式){语句;}
- 快速入门
$age=150; if($age>18){ echo "你年龄大于18.要对自己的行为负责"; }
- 双分支
- 语法:if(条件表达式){语句;}else{语句;}
- 多分支(if else if else、switch)
- 语法:if(条件表达式){语句;}else{语句;}
- elif可以有多个,也可以没有
- else可以没有
- 语法:switch(表达式){case 变量1;n多语句;break;case 变量1;n多语句;break;defual:n多语句;break;}
- case语句部分有一到多
- defaul语句可以没有(根据自己代码业务逻辑)
- 通常在case语句后要带上break。表示退出switch语句
- 常量类型(int、float、string、boolean)
$mychar='a'; //常量可以为布尔类型(true)/字符串(“a”) //当用布尔类型匹配时,会自动转换数据类型 switch ($mychar) { case 'a': echo "今天星期一"; //输出"今天星期一" break; //注意:如果没有break,就会顺序执行,直到遇到下一个break case 'b': echo "今天星期二"; break; case 'c': echo "今天星期三"; break; default: echo "没有匹配的日期"; break; } //最终结论:首先按照case顺序进行匹配,如果一个都没匹配到则执行default,直到遇到break语句,退出switch echo "over"; //输出over
3.循环控制
- for循环
- 语法:for(循环初值;循环条件;步长){语句;}
<?php for ($i=1; $i <= 5; $i++) { for ($m=1; $m <=$i ; $m++) { echo "*"; } echo "<br/>"; } ?> /*结果: * ** *** **** ***** */
- while循环
- 语法:while(循环条件){//循环体}
$a=0; while ( $a< 10) { echo "hello"."<br/>"; //输出10句hello $a++; //对循环变量自增 }
- do...while循环控制
- 语法:do{循环体 }while(循环条件);
$i=0; do{ echo "hi"."<br/>"; //输出5次hi $i++; }while ($i<5); //先执行在判断循环条件
ex1:打印整个金字塔
1 //打印整个金字塔 2 $n=3; 3 for ($i=1; $i <= $n; $i++) { 4 //在打印*之前 先打印空格 5 for ($j=1; $j<=$n-$i;$j++){ 6 echo " "; 7 } 8 //内层控制每层*的个数 9 for ($m=1; $m <=($i-1)*2+1 ; $m++) { 10 echo "*"; 11 } 12 13 echo "<br/>"; 14 } 15 /*打印结果: 16 * 17 *** 18 ***** 19 */
ex2:打印空心金字塔
1 $n=8; 2 for ($i=1; $i <=$n ; $i++) { //判断层数 3 for ($m=0; $m <=$n-$i; $m++) { //金字塔前面的空格 4 echo " "; 5 } 6 for ($j=1; $j <=($i*2)-1 ; $j++) //每层的个数 7 { 8 //判断第一层和最后一层全部打印 9 if ($i==1||$i==$n) 10 { 11 echo "*"; 12 }else 13 { 14 //判断每层的第一个和最后一个打印*,其他输出空格 15 if ($j==1||$j==($i*2)-1) 16 { 17 echo "*"; 18 } 19 else 20 { 21 echo " "; 22 } 23 } 24 // echo "*"; 25 } 26 echo "<br/>"; 27 } 28 ?> 29 /* 30 打印结果: 31 * 32 * * 33 * * 34 * * 35 * * 36 * * 37 * * 38 *************** 39 *
ex3:简易计算器
1 //ex2.php 2 <html> 3 </!DOCTYPE html> 4 <html> 5 <head> 6 <title>jisuanqi</title> 7 </head> 8 <body> 9 <form action="result.php" method="post"> 10 <table width="300px" border="0"> 11 <tr> 12 <td>第一个数:</td><td><input type="text" name="num1"/></td> 13 </tr> 14 <tr> 15 <td>第二个数:</td><td><input type="text" name="num2"/></td> 16 </tr> 17 <tr> 18 <td>运算符</td> 19 <td><select name="oper"> 20 <option value="+">+</option> 21 <option value="-">-</option> 22 <option value="*">*</option> 23 <option value="/">/</option> 24 </select></td> 25 </tr> 26 <tr > 27 <td colspan="2"><input type="submit" value="计算结果" /></td> 28 </tr> 29 </table> 30 </form> 31 </body> 32 </html> 33 //result.php 34 <?php 35 //接受用户从ex2.php提交的数据 36 //1.接受num1 37 $num1=$_REQUEST["num1"]; 38 //2.接受num2 39 $num2=$_REQUEST["num2"]; 40 //3.接受运算符 41 $oper=$_REQUEST["oper"]; 42 $res=0; 43 switch ($oper) { 44 case '+': 45 $res=$num1+$num2; 46 echo "计算结果为:".$res; 47 break; 48 case '-': 49 $res=$num1-$num2; 50 echo "计算结果为:".$res; 51 break; 52 case '+': 53 case '*': 54 $res=$num1*$num2; 55 echo "计算结果为:".$res; 56 break; 57 case '/': 58 $res=$num1/$num2; 59 echo "计算结果为:".$res; 60 break; 61 default: 62 echo "你输入的运算符不对"; 63 break; 64 } 65 ?>
界面显示:
ex4:99乘法表
1 <?php 2 //判断层数 3 for ($i=1; $i <=9 ; $i++) { 4 //每层所显示的内容 5 for ($m=1; $m <=9 ; $m++) { 6 if($i>=$m){ 7 echo "$i*$m=".$m*$i." "; 8 } 9 } 10 echo "<br/>"; 11 } 12 ?> 13 /* 14 1*1=1 15 2*1=2 2*2=4 16 3*1=3 3*2=6 3*3=9 17 4*1=4 4*2=8 4*3=12 4*4=16 18 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 19 6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 20 7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 21 8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 22 9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81 23 */
ex5.选择不同的图片代表不同的剪刀锤子布,与随机生成的数字做剪刀锤子布游戏
ex4.php代码如下:
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title></title> 5 <!-- js代码。改变下拉值来改变所显示的图片 --> 6 <script language="javascript" type="text/javascript"> 7 function mychange(obj) { 8 var val=obj.value; 9 var myimage=document.getElementById("myimg"); 10 if (val=='jd') { 11 myimage.src="1.jpg"; 12 }else if (val=="cz") { 13 myimage.src="thumbnail (2).jpg"; 14 }else if (val=="b") { 15 myimage.src="thumbnail (3).jpg"; 16 } 17 } 18 </script> 19 </head> 20 <body> 21 <form name="form" action="tijiao.php" method="post"> 22 你出拳: 23 <!-- 为下拉框写一个onchange时间 --> 24 <select name="bs" onchange="mychange(this);"> 25 <option value="jd">剪刀</option> 26 <option value="cz">锤子</option> 27 <option value="b">布</option> 28 </select> 29 <img src="thumbnail (4).jpg" id="myimg"/> 30 <br/> 31 <input type="submit" name="开始比赛"> 32 </form> 33 </body> 34 </html>
result.php的代码如下:
1 <?php 2 //获取下拉框所选的值 3 $result=$_REQUEST["bs"]; 4 //产生随机数 5 $rd=rand(0,2); 6 switch ($result) { 7 case 'b': 8 if ($rd=="0") { 9 echo "你出的是".$result.",我出的是布"."<br/>"; 10 echo "平手" ; 11 }elseif($rd=="1") 12 { 13 echo "你出的是".$result.",我出的是锤子"."<br/>"; 14 echo "你赢了"; 15 }else{ 16 echo "你出的是".$result.",我出的是剪刀"."<br/>"; 17 echo "你输了"; 18 } 19 break; 20 case 'jd': 21 if ($rd=="0") { 22 echo "你出的是".$result.",我出的是布"."<br/>"; 23 echo "你赢了" ; 24 }elseif($rd=="1") 25 { 26 echo "你出的是".$result.",我出的是锤子"."<br/>"; 27 echo "你输了"; 28 }else{ 29 echo "你出的是".$result.",我出的是剪刀"."<br/>"; 30 echo "平手"; 31 } 32 break; 33 default: 34 if ($rd=="0") { 35 echo "你出的是".$result.",我出的是布"."<br/>"; 36 echo "你输了" ; 37 }elseif($rd=="1") 38 { 39 echo "你出的是".$result.",我出的是锤子"."<br/>"; 40 echo "平手"; 41 }else{ 42 echo "你出的是".$result.",我出的是剪刀"."<br/>"; 43 echo "你赢了"; 44 } 45 break; 46 } 47 ?> 48 <!-- 注意:html代码需写在php代码外面 --> 49 <a href="ex4.php">返回测试页面</a>
结果:
4.循环相关语句----break语句
基本概念:结束当前的for、while、do while、swith流程,可以给一个数字,表示退出到第几层
入门案例:
for ($i=0; $i <13 ; $i++) { echo "hello".$i."<br/>"; //输出结果:从hllo0一直到hello10 if ($i==10) { break; } }
5.continue
基本概念:continue用于结束本次循环剩余代码,从新开始新的一次循环(如果条件为真,就继续执行),continue后面也可以跟数字,表示从第几层循环开始
1 for ($i=0; $i <2 ; $i++) { 2 for ($j=0; $j <4; $j++) { 3 if ($j==2) { 4 continue 2; 5 } 6 echo '$i='.$i."<br/>"; 7 } 8 } 9 /* 10 $i=0 11 $i=0 12 $i=1 13 $i=1 14 hello 15 */
6.goto
基本概念:通过goto语句,我们可以跳转到指定的地方去执行
//注意:在for里面定义两个变量,注意用逗号隔开 for ($i=0,$j=50;$i <100 ; $i++) { while ($j--) { //一直在while里面的循环,直到跳出该循环 if ($j==17) goto end; } } echo "$i=".$i; //该语句不会被执行 end: echo "j=17".$i."||".$j;
7.常量
基本概念:特殊的变量.
- 定义变量前面不需要定义$
- 常量一旦定义 ,则不能修改其值
- 常量在定义的时候,就需要给他赋初值
- 常量可以通过define或者const定义
- 常量的名称,一般说是全部大写,用下划线间隔
- 什么时候需要使用到这个常量呢?在程序中我们不希望某个值变化,则考虑使用常量(圆周率,税率)
// 第一种方法 define("TAX_TATE", 0.08); //不允许改变 echo TAX_TATE; //输出0.08 //第二种方法 const TAX_TATE2=0.1; echo TAX_TATE2; //输出0.1