PHP编程与应用(2)
作者:手机用户2702936363 | 来源:互联网 | 2014-07-17 11:58
第五章PHP3语言结构(一)、控制结构1、IF语句IF语句是多数语言中的一个重要特点,它根据条件执行程序段。PHP的IF语句类似于C:if(expr)statement正如在表达式中所论述,expr被计算为它的真值。如果expr为TRUE,PHP执行相应语句,如果为FALSE则忽略它。
第五章 PHP3 语言结构 (一)、控制结构 1、IF语句 IF语句是多数语言中的一个重要特点,它根据条件执行程序段。PHP的IF语句类似于 C: if (expr) statement 正如在表达式中所论述, expr 被计算为它的真值。如果 expr 为TRUE, PHP执行相应语句, 如果为FALSE 则忽略它。 如果$a 大于 $b,下例将显示 'a is bigger than b': if ($a > $b) print "a is bigger than b"; 通常,你希望根据条件执行多于一条语句。当然,不需要给每条语句都加上 IF 判断。取而代之,可以把多条语句组成一个语句组。 If语句可以嵌套于其他 IF语句中,使你能够灵活地有条件的执行程序的各个部分。 2、 ELSE语句 通常你希望满足特定条件时执行一条语句,不满足条件是执行另一条语句。ELSE就是用来做这个的。ELSE 扩展IF语句,在IF语句表达式为FALSE时执行另一条语句。例如, 下面程序执行如果 $a 大于 $b则显示 'a is bigger than b',否则显示 'a is NOT bigger than b': if ($a>$b) { print "a is bigger than b"; } else { print "a is NOT bigger than b"; } 3、 ELSEIF语句 ELSEIF,就象名字所示,是IF和ELSE的组合,类似于 ELSE,它扩展 IF 语句在IF表达式为 FALSE时执行其他的语句。但与ELSE不同,它只在ELSEIF表达式也为TRUE时执行其他语句。 可以在一条IF语句中使用多条ELSEIF语句。第一个ELSEIF表达式为TRUE的语句将被执行。在PHP 3中,你也可以写成'else if' (写成两个单词)和 'elseif' (写成一个单词)效果一样。这只是写法上的细小差别(如果你熟悉 C,它也是),结果是完全一样的。 ELSEIF语句仅在IF表达式和任何前面的ELSEIF表达式都为FALSE,且当前ELSEIF表达式为TRUE时执行。 下面是一个含有ELSEIF和ELSE的嵌套格式的IF语句: if ($a==5): print "a equals 5"; print "..."; elseif ($a==6): print "a equals 6"; print "!!!"; else: print "a is neither 5 nor 6"; endif; 4、 WHILE语句 WHILE循环是PHP 3的一种简单的循环。象在 C 中一样。WHILE语句的基本格式是: WHILE(expr) statement WHILE语句的意思非常简单。它告诉PHP只要WHILE表达式为TRUE就重复执行嵌套的语句。每次循环开始时检查WHILE表达式的值,所以即使在嵌套语句内改变了它的值,本次执行也不会终止,而直到循环结束(每次PHP运行嵌套的语句称为一次循环)。类似于IF语句,你可以用大括号把一组语句括起来,在同一个WHILE循环中执行多条语句: WHILE(expr): statement ... ENDWHILE; 下面例子完全相同, 都打出数字 1 到 10: /* example 1 */ $i=1; while ($i<=10) { print $i++; /* the printed value would be $i before the increment (post- increment) */ } /* example 2 */ $i=1; while ($i<=10): print $i; $i++; endwhile; 5、DO..WHILE语句 DO..WHILE 非常类似于 WHILE 循环, 只是它在每次循环结束时检查表达式是否为真,而不是在循环开始时。 它和严格的WHILE循环的主要区别是DO..WHILE的第一次循环肯定要执行(真值表达式仅在循环结束时间检查), 而不必执行严格的WHILE循环(每次循环开始时就检查真值表达式, 如果在开始时就为FALSE, 循环会立即终止执行). DO..WHILE循环只有一种形式: $i = 0; do { print $i; } while ($i>0); 上面循环只执行一次, 因为第一次循环后,当检查真值表达式时, 它算出来是 FALSE ($i 不大于 0)循环执行终止。 6、 FOR循环语句 FOR循环是PHP中最复杂的循环。象在 C 中一样。 FOR循环的语法是: FOR (expr1; expr2; expr3) statement 第一个表达式(expr1)在循环开始时无条件的计算(执行)。 每一次循环, 表达式 expr2 都被计算。如果结果为 TRUE, 则循环和嵌套的语句继续执行。如果结果为 FALSE,则整个循环结 束。 每次循环结束时, expr3 被计算(执行). 每一个表达式都可为空。expr2 为空则循环的次数不定(PHP 默认它为TRUE,象C一样)。除非你要通过一个条件的 BREAK语句代替FOR 的真值表达式来结束循环,否则不要这样。 考虑下面例子。它们都显示数字 1 到 10: /* example 1 */ for ($i=1; $i<=10; $i++) { print $i; } /* example 2 */ for ($i = 1;;$i++) { if ($i > 10) { break; } print $i; } /* example 3 */ $i = 1; for (;;) { if ($i > 10) { break; } print $i; $i++; } 当然,第一个例子显然是最好的,但借此你可以发现在FOR 循环中很多场合可以使用空的表达式。 其他的语言有一条foreach语句用来遍历一个数组或哈希(hash)表。PHP使用while语句和 list()、each() 函数来达到这个功能。 7、 SWITCH选择语句 SWITCH语句就象是对同一个表达式的一系列IF语句。在很多时侯,你想把同一个变量(或者表达式)和许多不同的值去比较 ,并根据不同的比较结果执行不同的程序段。这就是 SWITCH语句的用处了。 下面两个例子通过不同的方法做同一件事,一个用一组 IF语句,另外一个用 SWITCH 语句: /* example 1 */ if ($i == 0) { print "i equals 0"; } if ($i == 1) { print "i equals 1"; } if ($i == 2) { print "i equals 2"; } /* example 2 */ switch ($i) { case 0: print "i equals 0"; break; case 1: print "i equals 1"; break; case 2: print "i equals 2"; break; } (二)、REQUIRE语句 REQUIRE语句用指定的文件代替自己,很象 C 中的预处理 #include 。 这意味着你不能为了每次调用该函数来包含不同文件的内容,而把require()语句放在一个循环结构,。要这么做,使用 INCLUDE 语句。 require('header.inc'); (三)、 INCLUDE语句 INCLUDE语句包含指定的文件。 每次遇到INCLUDE是INCLUDE语句就包含指定的文件。所以你可以在一个循环结构中使用INCLUDE语句以包含一系列不同的文件。 $files = array('first.inc', 'second.inc', 'third.inc'); for ($i = 0; $i include($files[$i]); } (四)、 函数 可以通过以下的语法定义函数: function foo( $arg_1, $arg_2, ..., $arg_n ) { echo "Example function.\n"; return $retval; } 函数中可以使用任何有效的PHP3 代码,甚至是其他的函数或类 的定义 1、 函数返回值 函数可以通过可选的return语句返回值。返回值可以是任何类型,包括列表和对象。 function my_sqrt( $num ) { return $num * $num; } echo my_sqrt( 4 ); // outputs '16'. 函数不能同时返回多个值,但可以通过返回列表的方法来实现: function foo() { return array( 0, 1, 2 ); } list( $zero, $one, $two ) = foo(); 2、 参数 外部信息可以通过参数表来传入函数中;参数表就是一系列逗号分隔的变量和/或常量。 PHP3支持通过值形参数(默认), 变量参数,和 默认参数。不支持变长参数表, 但可以用传送数组的方法来实现。 3、 关联参数 默认情况函数参数是传值方式。如果你允许函数修改传入参数的值,你可以使用变量参数。 如果你希望函数的一个形式参数始终是变量参数,你可以在函数定义时给该形式参数加(&)前缀: function foo( &$bar ) { $bar .= ' and something extra.'; } $str = 'This is a string, '; foo( $str ); echo $str; // outputs 'This is a string, and something extra.' 如果要传递一个可变参数给默认的函数(其形式参数不是变参方式),你可以在调用函数时给实际参数加(&)前缀: function foo( $bar ) { $bar .= ' and something extra.'; } $str = 'This is a string, '; foo( $str ); echo $str; // outputs 'This is a string, ' foo( &$str ); echo $str; // outputs 'This is a string, and something extra.' 4、 默认值 函数可以定义 C++ 风格的默认值,如下: function makecoffee( $type = "cappucino" ) { echo "Making a cup of $type.\n"; } echo makecoffee(); echo makecoffee( "espresso" ); 上边这段代码的输出是: Making a cup of cappucino. Making a cup of espresso. 注意,当使用默认参数时,所有有默认值的参数应在无默认值的参数的后边定义;否则,将不会按所想的那样工作。 5、CLASS(类) 类是一系列变量和函数的集合。类用以下语法定义: class Cart { var $items; // Items in our shopping cart // Add $num articles of $artnr to the cart function add_item($artnr, $num) { $this->items[$artnr] += $num; } // Take $num articles of $artnr out of the cart function remove_item($artnr, $num) { if ($this->items[$artnr] > $num) { $this->items[$artnr] -= $num; return true; } else { return false; } } } ?> 上面定义了一个叫Cart 的类 , 其中包括一个关联数组和两个用来从cart中增加和删除项目的函数。 类是实际变量的原始模型。你要通过 new 操作符来建立一个所需类型的变量。 $cart = new Cart ; $cart - > add_item ( "10" , 1 ) ; 这建立起一个 Cart类的对象$cart。该对象的函数add_item ( ) 被调用来给第10项加 1。 类可以从其他的类扩充得到。扩充或派生出来的类拥有基类的所有变量和函数及你在扩充定义中所定义的东西。这要使用 extends 关键字。 class Named_Cart extends Cart { var $owner ; function set_owner ( $name ) { $this - > owner = $name ; } } 这里定义了一个名为 Named_Cart 的类它继承了 Cart类所有变量和函数并增加了一个变量 $owner和一个函数 set_owner ( ) 。 你建立的 named_cart 类的变量现在就能设置carts 的 owner了。在named_cart变量中你仍然可以使用一般的 cart函数 : $ncart = new Named_Cart ; / / Create a named cart $ncart - > set_owner ( "kris" ) ; / / Name that cart print $ncart - > owner ; / / print the cart owners name $ncart - > add_item ( "10" , 1 ) ; / / ( inherited functionality from cart ) 函数中的变量 $this 意思是当前的对象。你需要使用 $this - > something 的形式来存取所有当前对象的变量或函数。 类中的构造器是你建立某种类的新变量时自动被调用的函数。类中和类名一样的函数就是构造器。 class Auto_Cart extends Cart { function Auto_Cart ( ) { $this - > add_item ( "10" , 1 ) ; } } 这里定义一个类 Auto_Cart , 它给 Cart类加了一个每次 new 操作时设置项目10进行变量初始化的构造器。构造器也可以有参数 , 这些参数是可选的 , 这种特点也使得其十分有用。 class Constructor_Cart { function Constructor_Cart ( $item = "10" , $num = 1 ) { $this - > add_item ( $item , $num ) ; } } / / Shop the same old boring stuff . $default_cart = new Constructor_Cart ; / / Shop for real ... $different_cart = new Constructor_Cart ( "20" , 17 ) ;
推荐阅读
本文介绍了拍摄高质量Vlog所需的设备,包括索尼A7 III相机、蔡司镜头、罗德麦克风、单反稳定器、苹果手机及其配件、灯光设备等。此外,还探讨了后期制作所需的软件工具,如剪辑、特效和调色软件。无论你是业余爱好者还是专业创作者,选择合适的设备至关重要。 ...
[详细]
蜡笔小新 2024-12-28 12:46:53
QUIC(Quick UDP Internet Connections)是谷歌开发的一种旨在提高网络性能和安全性的传输层协议。它基于UDP,并结合了TLS级别的安全性,提供了更高效、更可靠的互联网通信方式。 ...
[详细]
蜡笔小新 2024-12-28 12:33:18
探讨一个老旧 PHP MySQL 系统中,时间戳字段不定期出现异常值的问题及其可能原因。 ...
[详细]
蜡笔小新 2024-12-28 11:46:54
尽管商业智能(BI)工具在中国的普及程度尚不及国际市场,但近年来,随着本土企业的持续创新和市场推广,国内主流BI工具正逐渐崭露头角。面对国际品牌如Tableau的强大竞争,国内BI工具通过不断优化产品和技术,赢得了越来越多用户的认可。 ...
[详细]
蜡笔小新 2024-12-28 11:12:44
本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ...
[详细]
蜡笔小新 2024-12-28 10:36:30
本文将详细解读郑州大学作为一所位于河南省的211和双一流B类高校,在全国211高校中的地位与排名,帮助高三学生更好地了解这所知名学府的实力与发展前景。 ...
[详细]
蜡笔小新 2024-12-28 10:08:34
本文介绍如何使用 Oracle 存储函数查询特定员工的年收入。我们将详细解释存储函数的创建过程,并提供完整的代码示例。 ...
[详细]
蜡笔小新 2024-12-28 09:49:42
本文探讨如何利用ASM框架进行字节码操作,以优化现有类的转换过程,简化复杂的转换逻辑,并移除不必要的加0操作。通过这些技术手段,可以显著提升代码性能和可维护性。 ...
[详细]
蜡笔小新 2024-12-28 09:35:00
本文总结了2018年的关键成就,包括职业变动、购车、考取驾照等重要事件,并分享了读书、工作、家庭和朋友方面的感悟。同时,展望2019年,制定了健康、软实力提升和技术学习的具体目标。 ...
[详细]
蜡笔小新 2024-12-28 09:10:26
本资源汇集了常用的插件和贴片三极管、MOS管以及部分LDO的封装,涵盖TO和SOT系列。所有封装均配有高质量的3D模型,共计96种,满足日常设计需求。 ...
[详细]
蜡笔小新 2024-12-28 09:05:19
在计算机技术的学习道路上,51CTO学院以其专业性和专注度给我留下了深刻印象。从2012年接触计算机到2014年开始系统学习网络技术和安全领域,51CTO学院始终是我信赖的学习平台。 ...
[详细]
蜡笔小新 2024-12-28 08:20:07
本文介绍了如何使用 CSS 实现液态的三栏布局,其中各栏具有不同的宽度设置。通过调整容器和内容区域的属性,可以实现灵活且响应式的网页设计。 ...
[详细]
蜡笔小新 2024-12-28 02:40:28
本文详细介绍了如何使用PHP检测AJAX请求,通过分析预定义服务器变量来判断请求是否来自XMLHttpRequest。此方法简单实用,适用于各种Web开发场景。 ...
[详细]
蜡笔小新 2024-12-27 21:20:10
近期,小红书对MCN机构的入驻要求进行了调整,明确要求MCN机构在入驻时需缴纳20万元人民币的保证金。此举旨在进一步规范平台内容生态,确保社区的真实性和用户体验。 ...
[详细]
蜡笔小新 2024-12-27 20:42:02
本文详细介绍了 Linux 系统启动过程中常见的 MBR 扇区和 GRUB 引导程序故障及其解决方案,涵盖从备份、模拟故障到恢复的具体步骤。 ...
[详细]
蜡笔小新 2024-12-27 20:40:29
手机用户2702936363
这个家伙很懒,什么也没留下!