`
cyxlgzs
  • 浏览: 90268 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

PHP实践之路(六)控制结构

 
阅读更多

PHP实践之路(目录索引)

PHP中控制结构

首先要说明的一点是:在php中和其他高级语言类似,在一对大括号{}中间的语句称为一个语句组。每条语句都是以分号作为结尾

1、if/else控制结构

a、结构模式一
if(expr){
	statement 1
}
else if(expr){
	statement 2
}
else if(expr){
	statement 3
}
……
else{
	statement n
}
b、结构模式二
if(expr):
	statement 1
elseif(expr):
	statement 2
elseif(expr):。
	statement 3
……
else
	statement n
end if;

c、需要指出的是,(ˇˍˇ) java、c等语言一般都采用结构一。php中两种模式都可以采用。注意其中else if和elseif的区别
d、结构模式二作为php中一种控制结构的替代语法,详情见其他部分。在替代语法中不允许将elseif分开,否则编译将出错

实验时间
<?php
$a=1;
$b=2;
if($a==$b):
	echo '$a = $b';
	echo ' see1?';
elseif($a>$b):
	echo '$a > $b';
	echo ' see2?';
else:				//这里执行else 将输出 $a < $b see3?
	echo '$a < $b';
	echo ' see3?';
endif;

echo '<br />';		//换行
$a=3;
if($a==$b){
	echo '$a = $b';
	echo ' see4?';
}
else if($a > $b){	//这里将执行,将输出 $a > $b see5?
	echo '$a > $b';
	echo ' see5?';
}
else{
	echo '$a < $b';
	echo ' see6?';
}
?>

2、while控制结构

a、结构模式一:当expr为true时执行
while(expr){
	statement
}
b、结构模式二:当expr为true时执行,这是一种php中的替代语法
while(expr):
	statement
endwhile;

c、结构模式三,do/while循环,先执行语句后检查条件
do{
	statement
}while(expr);
实验时间
<?php
$count = 0;

while($count<=10){
	echo $count;
	echo " ";		//输出一个空格
	$count++;
}
//以上将输出 0 1 2 3 4 5 6 7 8 9 10 

//接下来测试替代语法
$count = 0;		//重置0
echo "<br />";	//换行
while($count<=5):
	echo $count;
	echo " ";		//输出一个空格
	$count++;
endwhile;
//以上将输出 0 1 2 3 4 5

$count = 0;		//重置0
echo "<br />";	//换行
do{
	echo $count;
	echo " ";		//输出一个空格
	$count++;
}while($count<=5);
//以上将输出 0 1 2 3 4 5

/********看看一下while和do/while两种循环的区别**********/
echo "<br />";	//换行
$count=0;
while($count>0){
	echo "see1?";		//不执行
}
$count=0;
do{
	echo "see2?";		//执行了一次,do/while循环最少执行一次循环内部的语句
}while($count>0);

?>

3、for控制结构

a、结构模式一
for(expr1;expr2;expr3){
	statement
}
b、结构模式二
for(expr1;expr2;expr3):
	statement
endfor;
c、
expr1在循环开始前无条件求值一次;
expr2 在每次循环开始前求值。如果值为TRUE,则继续循环,执行嵌套的循环语句。如果值为FALSE,则终止循环;
expr3 在每次循环之后被求值
d、foreach,它只适用于数组(自PHP5开始,foreach也可以遍历对象),结构模式如以下两种
foreach (array_expression as $value){
	statement
}

foreach (array_expression as $key => $value){
	statement
}
每次执行forech时,数组内部的指针都会重新指向第一个单元,所以没必要担心执行一次后指针索引到哪了

实验时间
<?php
for($count=0;$count<10;$count++){
	echo $count;
	echo " ";		//空格
}
//以上输出 0 1 2 3 4 5 6 7 8 9 
echo "<br />";		//换行

for($count=0;$count<5;$count++):
	echo $count;
	echo " ";		//空格
endfor;
//以上输出 0 1 2 3 4
echo "<br />";		//换行
$arr=array(1,2,3,4);
foreach ($arr as $value){
	echo $value;
	echo " ";		//空格
}
//以上输出 1 2 3 4
echo "<br />";		//换行
foreach ($arr as $key => $value){
	echo $key."->".$value;
	echo " ";		//空格
}
//以上输出 0->1 1->2 2->3 3->4   

/*************以下测试foreach遍历对象**************/
echo "<br />";		//换行
class Person{
	public $name="cyxl";
	private $age=26;
	
	public function loop(){
		foreach($this as $key => $val){
			echo $key."->".$val;
			echo " ";		//空格
		}
	}
}
$p=new Person;
foreach($p as $key => $val){
	echo $key."->".$val;
	echo " ";		//空格
}
//以上输出 name->cyxl
echo "<br />";		//换行
$p->loop();		//输出 name->cyxl age->26

//想想两次遍历对象$p为什么结果不一样,如果有面向对象知识基础的,
//可以看看$name和$age前面的两个修饰符public和private的区别.没有
//也没关系,后面我们将对象时会详细讲到的
?>

4、swith控制结构

a、结果模式一
switch(expr){
	case val1:
		statement
		break;
	case val2:
		statement
		break;
	……
	default:
		statement
}

b、结构模式二,替代语法
switch(expr):
	case val1:
		statement
		break;
	case val2:
		statement
		break;
	……
	default:
		statement
endswitch;

c、以上模式为一般模式,其中statement、break;、default等是可选的
d、case后面的冒号“:”可以用分号“;”代替
e、switch中的表达式expr可以任意简单类型,如整数,浮点数和字符串。它只会被求值一次(if/else结构中每次都会重新求值,考虑到相率
方面可以考虑采用switch结构),然后从上往下依次和case中的值进行比较。当执行一个case中的语句末尾没有break语句的话,它还会执行
下一个case语句。所以为了让结构清晰,执行结果等原因最好是在每条case语句末尾都加上break
d、default作为一个默认的执行分支,当依次和case中的值比较发现没有相等的值时执行default中的语句,相当于if/else结构中的else分支
好,又到了实验时间了,一起动动手吧
<?php
$i=0;
switch ($i) {
    case 0:
        echo "i equals 0<br />";
    case 1:
        echo "i equals 1<br />";
    case 2:
        echo "i equals 2<br />";
}
//以上将输出
/*
i equals 0
i equals 1
i equals 2
*/
switch ($i) {
    case 0:
        echo "i equals 0<br />";
		break;		//我们加上break比较一下输出结果
    case 1:
        echo "i equals 1<br />";
		break;
    case 2:
        echo "i equals 2<br />";
		break;
}
//以上将输出 i equals 0

$name="jack";
switch($name):
	case "lily";     //用分号代替冒号
		echo "name is lily<br />";
		break;
	case "jack";
		echo "name is jack<br />";
		break;
	default;
		echo "defautl name<br />";
		break;
endswitch;
//以上输出 name is jack
$name="";
switch($name):
	case "lily";
		echo "name is lily<br />";
		break;
	case "jack";
		echo "name is jack<br />";
		break;
	default;
		echo "defautl name<br />";
		break;
endswitch;
//以上输出 defautl name
?>

5、goto控制结构

a、goto操作符可以用来跳转到程序中的某一指定位置。该目标位置可以用目标名称加上冒号来标记
b、PHP中只能在同一个文件和作用域中跳转,也就是说你无法跳出一个函数或类方法,也无法跳入到另一个函数。你也无法跳入到任何循环或者switch 结构中
c、常见的用法是用来跳出循环或者switch,可以代替多层的break
d、由于goto结构很容易就破坏了程序的执行流程,使用时应当谨慎
好了,我们来实验一下吧
<?php
$count=10;

while($count>0){
	$count--;
	if($count==5){
		goto end;
	}
	echo "count to ".$count;
	echo "<br />";
}
//以上将输出
/*
count to 9
count to 8
count to 7
count to 6
game over..
*/
end:
	echo "game over...";

?>

6、其他

a、php中的替代语法:包括 if,while,for,foreach 和 switch。替代语法的基本形式是把左花括号({)换成冒号(:),把右花括号(})分别换成 endif;,endwhile;,endfor;,endforeach; 以及 endswitch;结合以上的例子,我们已经在例子中使用了一些替代语法
b、break:结束当前forforeachwhiledo-while 或者 switch 结构的执行。可以接受一个可选的数字参数来决定跳出几重循环
c、continue:在循环结构用用来跳过本次循环中剩余的代码并在条件求值为真时开始执行下一次循环;它可以接受一个可选的数字参数来决定跳过几重循环到循环结尾
d、return:结束当前函数或者脚本的执行,具体看return使用的具体位置
接下来我们做几个实验
<?php
$count=10;

while($count>0){
	$count--;
	if($count==8){
		continue;	//执行下一次循环
	}
	if($count==5){
		break;		//直接跳出循环
	}
	echo "count to ".$count;
	echo "<br />";
}
//以上输出结果如下
/*
count to 9
count to 7
count to 6
*/

function calc($a,$b){
	return $a + $b;		//返回相加的结果,结束当前函数
}

echo(calc(1,2));	//输出结果3

return;	//结束主脚本的运行

echo "see?";		//不再执行输出
?>


版权声明:本文为博主原创文章,未经博主允许不得转载。

分享到:
评论

相关推荐

    PHP网络编程技术与实践 源码

    2.1.6 PHP的流程控制 2.2 PHP的数据存储处理 2.2.1 压缩文件的打开与关闭 2.2.2 压缩文件的基本读写 2.2.3 压缩文件的扩展读取 2.2.4 压缩文件的文件指针 2.3 PHP的字符串处理 2.3.1 字符串的分割与截取 2.3.2 字符...

    《PHP专业实例开发 》[PDF]

    本书是学习PHP编程的优秀参考书,其主要内容有:第1部分概述了PHP编程的基础知识,如PHP的安装和配置、变量、运算符和常量、控制结构、数组和函数、类的应用,并介绍了在线购物站点的创建过程:在第2部分到第6部分中...

    Symfony 高性能php框架 v4.3

    简单的模板功能symfony是一个开源的PHP ...也就是说,你拥有整个设置的控制权:从路径结构到外部库,几乎一切都可以自定义。为了符合企业的开发条例,Symfony还绑定了一些额外的工具,以便于项目的测试,调试以及归档。

    PHP程序设计简明教程.rar

    1.流程控制结构 .......................... 53 2. PHP 嵌入HTML 或JavaScript 中 ..... 53 3.用PHP 输出HTML 或JavaScript ...... 55 4.自服务程序 56 第三节 实验二 PHP 语法实验 ......... 57 第四章 MySQL ...

    Symfony 高性能php框架 v4.3.zip

    也就是说,你拥有整个设置的控制权:从路径结构到外部库,几乎一切都可以自定义。为了符合企业的开发条例,Symfony还绑定了一些额外的工具,以便于项目的测试,调试以及归档。 Symfony 高性能php框架特点 缓存管理...

    让此应用程序成为Laravel的快速入门,它将帮助您构建应用程序结构,并向您展示Laravel的每个组件以及如何最佳实践它们。-PHP开发

    Start Laravel Start laravel是一个简单...每个框架都应该具有它的快速入门应用程序,让该应用程序是Laravel的快速入门,它将帮助您构建应用程序结构并向您展示Laravel的每个组件以及如何最佳实践它们。 希望对您有帮助

    Symfony 高性能php框架-PHP

    简单的模板功能symfony是一个开源的PHP ...也就是说,你拥有整个设置的控制权:从路径结构到外部库,几乎一切都可以自定义。为了符合企业的开发条例,Symfony还绑定了一些额外的工具,以便于项目的测试,调试以及归档。

    api.boilerplate:具有最佳设计实践和经验的laravel API的实现。 (DDD,CQRS,ES,Rest和GraphQL)

    api样板具有最佳设计实践和学习知识的流明API的实现。 (DDD,CQRS,ES,Rest和GraphQL)去做一定有 升级到...评估提供者并推迟结构 清理未使用的laravel资产和依赖项(即资源,路由) 创建开发和版本控制以备将来使用

    leetcode打不开-algorithms:算法实践

    对控制流的深入了解if , else , and , or 数组:查找、插入、循环 对象(哈希表):查找、循环、插入 语言特定的内置方法 数学:代数(例如,对数、指数、素数、幂) 如果您缺少一些最低要求,那么我建议您参加进修...

    KPPW客客出品专业威客系统 v2.2 GBK 正式版

    KPPW是一款基于PHP+MYSQL技术构架的威客系统,积客客团队多年实践和对威客模式商业化运作的大量调查分析而精心策划研发,是您轻松搭建威客网站的首选利器。KPPW针对威客任务和商品交易模式进行了细致的分析,提供...

    KPPW客客出品专业威客系统 v2.2 UTF8 正式版

    KPPW是一款基于PHP+MYSQL技术构架的威客系统,积客客团队多年实践和对威客模式商业化运作的大量调查分析而精心策划研发,是您轻松搭建威客网站的首选利器。KPPW针对威客任务和商品交易模式进行了细致的分析,提供...

    2017最新老男孩MySQL高级专业DBA实战课程全套【清晰不加密】,看完教程月入40万没毛病

    第九部-老男孩MySQL服务日志详细介绍及增量恢复命令实践(7节) 01-mysqlbinlog命令介绍及实战讲解 02-mysqldump-master-data参数答疑详解 03-MySQL服务错误日志介绍及实践 04-MySQL服务普通查询日志介绍及实践 05-...

    ThinkPHP v5.1 RC2.zip

    ThinkPHP借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,采用单一入口模式等,融合了Struts的 Action思想和JSP的TagLib(标签库)、RoR的ORM映射和ActiveRecord模式,封装了CURD和一些常用操作,...

    开源软件之道.part2of2

    4.4 风险控制成本 28 第2篇 使用开源软件 第5章 正确使用开源软件 32 5.1 管理体制 32 5.2 法律风险 33 5.2.1 法律因素之著作权 34 5.2.2 法律因素之许可证 35 5.2.3 法律因素之专利 36 5.2.4 问题解析 37 5.2.5 ...

    C语言在本科计算机相关专业的课程定位及学习体会-.doc

    在 C 语言的学习过程中,一般有大量的算法和数据结构需要去了解,由此可见数学在计算机 学习中的重要地位,同理,在 C 语言的学习过程中,数学思想的应用会让人有豁然开朗之感,一些简单的运算问题的解 决其实就是在...

    MySQL-Front version 5.1

    为Windows GUI应用程序,它已完全控制图形显示,也可尽可能明确。您的数据是在一个表中列的大小,宽度和分拣能力。 如果您的提供商允许, MySQL的阵线可以直接接触数据库。否则,只有一个小的脚本需要安装的出版...

    ZUI前端html5框架 v1.9.1.zip

    增加组织结构图视图,轻松绘制多级树形组织结构图,支持更新和折叠控制; 图标: 增加了一些新的图标:.icon-plus-sign-alt,.icon-check-plus,.icon-chanzhi,.icon-chanzhi-pro,.icon-zsite,.icon-zsite-pro...

    阿里巴巴开源的分布式文件系统 TFS.zip

    淘宝在这一领域做了有效的探索和实践,Taobao File System(TFS)作为淘宝内部使用的分布式文件系统,针对海量小文件的随机读写访问性能做了特殊优化,承载着淘宝主站所有图片、商品描述等数据存储。 文章首先概括了...

    《ASP.NET程序设计实用教程》配套资料-cd, ppt

     第2章 C#程序设计基础,介绍了C#语言的编译器、数据结构、控制语句及面向对象的编程特性。  第2部分 ASP.NET程序设计基础  第3章 服务器端控件,介绍了服务器端控件的基本概念、HTML服务器端控件、...

Global site tag (gtag.js) - Google Analytics