php的控制语句


Posted in PHP onOctober 09, 2006

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 < count($files); $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(类)

类是一系列变量和函数的集合。类用以下语法定义:

 <?php

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);

  

  

PHP 相关文章推荐
随时给自己贴的图片加文字的php水印
Mar 16 PHP
用PHP生成静态HTML速度快类库
Mar 18 PHP
php 正则表达式小结
Aug 31 PHP
php eval函数用法 PHP中eval()函数小技巧
Oct 31 PHP
教你如何在CI框架中使用 .htaccess 隐藏url中index.php
Jun 09 PHP
PHP的压缩函数实现:gzencode、gzdeflate和gzcompress的区别
Jan 27 PHP
Zend Framework动作助手Url用法详解
Mar 05 PHP
PHP读书笔记_运算符详解
Jul 01 PHP
PHP获取当前文件的父目录方法汇总
Jul 21 PHP
CI框架实现框架前后端分离的方法详解
Dec 30 PHP
利用PHP实现开心消消乐的算法示例
Oct 12 PHP
PHP+redis实现微博的拉模型案例详解
Jul 10 PHP
PHP4 与 MySQL 交互使用
Oct 09 #PHP
Access数据库导入Mysql的方法之一
Oct 09 #PHP
做一个有下拉功能的留言版
Oct 09 #PHP
留言板翻页的实现详解
Oct 09 #PHP
聊天室php&amp;mysql(二)
Oct 09 #PHP
聊天室php&amp;mysql(一)
Oct 09 #PHP
建立文件交换功能的脚本(三)
Oct 09 #PHP
You might like
FleaPHP的安全设置方法
2008/09/15 PHP
php禁止直接从浏览器输入地址访问.php文件的方法
2014/11/04 PHP
php实现在新浪云中使用imagick生成缩略图并上传的方法
2016/09/26 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
2017/09/21 PHP
使用PHP反射机制来构造&quot;CREATE TABLE&quot;的sql语句
2019/03/21 PHP
弹出层之1:JQuery.Boxy (一) 使用介绍
2011/10/06 Javascript
jQuery图片的展开和收缩实现代码
2013/04/16 Javascript
javascript中的=等号个数问题两个跟三个有什么区别
2013/10/23 Javascript
判断一个对象是否为jquery对象的方法
2014/03/12 Javascript
jquery队列queue与原生模仿其实现方法分享
2014/03/25 Javascript
js中window.open打开一个新的页面
2014/08/10 Javascript
js实现带关闭按钮始终显示在网页最底部工具条的方法
2015/03/02 Javascript
基于jQuery实现文本框只能输入数字(小数、整数)
2016/01/14 Javascript
Node.js DES加密的简单实现
2016/07/07 Javascript
js+html制作简单验证码
2017/02/16 Javascript
微信小程序 定位到当前城市实现实例代码
2017/02/23 Javascript
详解React 16 中的异常处理
2017/07/28 Javascript
js正则取值的结果数组调试方法
2018/10/10 Javascript
mpvue微信小程序多列选择器用法之省份城市选择的实现
2019/03/07 Javascript
js实现3D旋转相册
2020/08/02 Javascript
详解微信小程序轨迹回放实现及遇到的坑
2021/02/02 Javascript
Python学习笔记之常用函数及说明
2014/05/23 Python
基于hashlib模块--加密(详解)
2017/06/21 Python
PyQt5实现简单数据标注工具
2019/03/18 Python
Python实现的对一个数进行因式分解操作示例
2019/06/27 Python
基于python实现的百度音乐下载器python pyqt改进版(附代码)
2019/08/05 Python
python实现IOU计算案例
2020/04/12 Python
Python自带的IDE在哪里
2020/07/01 Python
如何让Java程序执行效率更高
2014/06/25 面试题
大学生入党推荐书范文
2014/05/17 职场文书
道路交通事故赔偿协议书
2014/10/24 职场文书
2014年残联工作总结
2014/11/21 职场文书
2015年乡镇妇联工作总结
2015/05/19 职场文书
2015初中团委工作总结
2015/07/28 职场文书
2016年少先队活动总结
2016/04/06 职场文书
nginx内存池源码解析
2021/11/20 Servers