《其他操作符与表达式、流程控制.ppt》由会员分享,可在线阅读,更多相关《其他操作符与表达式、流程控制.ppt(31页珍藏版)》请在金锄头文库上搜索。
1、第三章其他操作符与表达式、流程第三章其他操作符与表达式、流程控制控制课前回顾课前回顾1.掌握PHP基本语法2.掌握PHP变量、常量、数组与数据类型3.掌握HTML中PHP的输出4.掌握PHP基本判断流程课程目标课程目标一、掌握php流程控制二、理解并掌握php函数PHP程序控制语句 PHP的程序和Javascript一样,脚本中的语句一般是按照写的顺序来运行的。这种称为顺序运行,是程序流的默认方向。 与顺序运行不同的,另一种运行将程序流转换到脚本另外的部分。也就是,不按顺序运行下一条语句,而是运行另外的语句,叫做控制流程语句。控制语句如下:控制语句如下:一、条件语句一、条件语句 (1)if 语
2、句 (2)switch语句(多分支) (3)三元操作符三元操作符 二、循环语句二、循环语句 (1)for循环 (2)while循环 (3)dowhile循环一、条件语句一、条件语句实例1-1 $b) /判断a是否大于b print “a大于b”; ?if (表达式一表达式一) /满足条件执行以下程序段 . . . (1)if 语句语法:语句语法:if (表达式一表达式一) /满足条件执行以下程序段 else /不满足执行如下程序段 实例1-2 $b) /判断a是否大于b print “a大于b”; else /反之a小于b print “a小于b”; ?(2)if 语句语法:语句语法:if (
3、表达式一表达式一) /满足条件执行以下程序段 elseif (表达式二表达式二) else 实例1-3 $b) print “a大于b”; elseif ($a=$b) print “a等于b”; else print “a小于b”; ?(3)if 语句语法:语句语法:If语句的应用?php$grade=91; /给grade变量赋初始值if ($grade=60 & $grade=70 & $grade=80 & $grade显示结果:你简直太棒了!switch ($i) case 0: print i equals 0; break;case 1: print i equals 1; br
4、eak; case 2: print i equals 2; break; default: break, continue Break 中断当前的循环控制结构。 Continue 被用来跳出剩下的当前循环并继续执行下一次循环。 (2)switch语句语句Switch语句的应用()三元操作符()三元操作符 PHP脚本语言支持操作符?:,它是if语句的紧凑版本。我们可以用下面的实例来对该三元操作符进行解释:我们先使用if-else语句来写这么一条语句:if($a$b) echo “a大于b”;else echo “a不大于b”;这是一个最基本的if-else结构,通过比较操作符来比较$a和$b两
5、个变量,如果$a大于$b那么就输出“a大于b”,否则输出“a不大于b”。而我们现在用三元操作符?:来表示看看:echo ($a$b)?“a大于b”:“a不大于b”;这两句代表这一样的意思,如果$a$b是返回的true,那么?:操作符返回字符串“a大于b”,否则返回字符串“a不大于b”,然后使用echo进行输出。如果习惯于采用这种结构,代码就更容易阅读,当然我们也可以采用if,你可以根据可读性和其他因素决定。 (1)For循环循环 二、循环语句二、循环语句for语句的结构是:for (start;condition;increment) statement(s); 在for语句的开始,start
6、表达式被计算一次。每经过一次循环,condition表达式都被测试一次。如果为true,则循环体被执行;如果为false,则循环结束,表达式increment在循环体运行后被计算。实例实例2-1?php for($i=1;$i显示结果:1+2+3+4+5+6+7+8+9+10+如果计算出expression的值为true,则statement被执行,并且接着再计算expression的值(如果为true,则循环体被执行,如此继续)。当计算的值为false时循环退出。(2) While循环循环while(expression) statement(s); while(expression): s
7、tatement(s); .; endwhile;语法结构一:语法结构二:?php$total = 0;$i = 1;while ($i以下例子是计算机的累加和. (语法一)?php$total = 0;$i = 1;while ($i以下例子是计算的累加和.(语法二)注:注:大家在写程序代码时注意在大家在写程序代码时注意在while():结束处的结束处的”冒号冒号”,在在endwhile;”分号分号”(3) Do-while循环循环 在PHP中同样也支持do-while循环,该循环为以下形式:do statement(s);while(expression)用do-while循环来确保循环体
8、至少被执行一次:?php$total = 0;$i = 1;do $total += $i+;while ($i foreach语句可用于遍历一个数组中的元素。可以用以下语句循环遍历一个数组,访问每一个键:(4) foreach循环循环foreach($array as $current) /.foreach ($array as $current): /.endforeach;语法结构一:语法结构二:?php$a = array (1, 2, 3, 5);foreach ($a as $v) print $a的数组的当前值为:$v ;?实例:三、函数函数(function)是一段完成指定任务
9、的已命名代码,函数可以遵照给它的一组值或参数(parameter)完成任务,并且可能返回一个值。函数节省了编译时间,无论调用函数多少次,函数都只需为页面编译一次。函数允许你在一处修改任何错误,而不是在每个执行任务的地方修改,这样就提高了程序的可靠性,并且将完成指定任务的代码一一隔离,也提高了程序的可读性。本讲介绍函数调用和函数定义的语法,并且讨论如何管理函数中的变量以及想函数中传递值(包括按值传递和按引用传递),也介绍了可变函数和匿名函数。一、调用函数一、调用函数PHP程序中的函数(内置或者是自定义)不管他们的源代码是怎样的,所有的函数都用相同的方法求值:$some_value = funct
10、ion_name(parameter,.);函数要求的参数个数因函数的不同而不同。提供给函数的参数可以是任何有效的表达式,并且必须指定参数在函数中预期的顺序。函数的文档将告诉你函数期望什么样的参数,以及你可以预期返回什么样的值。下面是一些内置函数的例子:下面是一些内置函数的例子:/strlen()是返回字符串长度的内置函数$length = strlen(“php”)/此时$length为3/sin()和asin()是数学正弦和反正弦函数$result = sin(asin(1);/$result是arcsin(1)的正弦/unlink()删除一个文件$result = unlink(“fun
11、ctions.txt”);/如果不成功则为false在第一个例子中给函数strlen()一个参数“PHP”,该函数返回给定字符串中的字符数。在这里,返回值3被赋给变量$length。这是最简单和最普通的使用函数的方法。第二个例子传递asin(1)的结果给函数sin()。因为正弦和反正弦函数互为反函数,所以对任何值的反正弦求正弦值将总是返回和原来相同的值。在最后一个例子中给函数unlink()一个文件名,以尝试删除该文件,与许多函数一样,操作失败时该函数返回false。这个例子允许使用另一个内置函数die()和逻辑操作符的短路属性。 二、定义函数二、定义函数要定义一个函数,可以使用下面的语法结构
12、:function & function_name(parameter,.) statement(s);?phpfunction foo () echo 天气好热;echo 希望明天下雨;echo 函数还没有被调用呢!;foo(); /开始调用该函数echo 函数调用成功!; ?实例:三、函数中变量的作用域三、函数中变量的作用域函数foo()中变量$a和外部变量$a是两个不同的变量,尽管foo()使用了相加赋值操作符,但是外部的$a的值在一页的生命周期中始终是3。而且函数中的$a的值为2。四、函数参数四、函数参数通过函数定义进行声明,函数可以有任意数目的参数。有两种不同的为函数传递参数的方法。
13、第一种也是最普遍的一种就是按值(value)传递,另一种是按引用(reference)传递。(一)按值传递参数(一)按值传递参数大多数情况是按值传递参数,参数可以是任何形式有效的表达式。计算表达式的值,并且将结果赋值给函数中适当的变量。(二)按引用传递参数(二)按引用传递参数按引用传递参数允许你忽略普通的作用域规则,而给出一个直接访问变量的功能。要按引用传递,参数必须是变量;在参数列表中的变量名前家上一个&符号来表示在该函数中的某个特定参数将按引用传递。function doubler(&$value) $value = $value * 2;$a = 3;doubler($a);echo $
14、a;五、函数的返回值五、函数的返回值PHP函数可以使用关键字return只返回一个值:PHP函数可以使用关键字return只返回一个值:function return_one() return 42;默认情况下,值是复制出的函数。如果一个函数在它名字之前用&声明,则返回其返回值的一个引用(别名):$name = array(“fred”,”barney”,”wilma”,”betty”);function & find_one($n) global $names; return $names$n;$person = & find_one(1);/barney$person = “barnett
15、a”;/改变$name1六、可变函数以及匿名函数六、可变函数以及匿名函数(一)可变函数(一)可变函数 因为有可变的变量,所以可以基于变量值调用函数。例如,考虑这种情况,一个变量被用于决定三个函数之中哪一个被调用:switch ($which) case first: first(); break; case second: second(); break; case third: third(); break;(二)匿名函数(二)匿名函数一些PHP的函数用你提供的函数来完成他们的部分工作。例如,函数usort()使用你创建的函数,并将其作为参数传递给它来确定一个数组中各项的排序顺序。如前所示,
16、尽管可以为这样的目的定义一个函数,但是这些函数倾向于局部化和临时性,为了反映回调的短暂特性,我们创建和使用一个匿名函数(anonymous function)。可以用create_function()创建一个匿名函数。这个函数带两个参数,第一个参数描述该匿名函数接受的参数,第二个参数是实际的代码。以下代码将返回为该函数随机产生的名字:$func_name = create_function(args_string,code_string);下面是一个展示使用usort()的例子:通过usort()(使用匿名函数)按字符串的长度顺序对该数组进行排序。$lambda = create_functi
17、on($a,$b,return(strlen($a)-strlen($b););$array = array(really long string here,boy, this, middling length , larger );usort($array,$lambda);print_r($array);总结现在我们已经了解了足够多的信息了。可以继续学习php 提供给我们的WEB技术的一些特性了。在下一章节中,我们将学习一些字符串函数的使用方法。作业1.请学员用将本章节的实例进行有效的检查。2. 为什么要将某些功能封装在函数中?3.说明函数中变量作用域的范围?4.按值穿传递和按引用传递有什么不同,如何申明它们?