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 COOKIE设置为浏览器进程
Jun 21 PHP
php 静态页面中显示动态内容
Aug 14 PHP
完美解决PHP中文乱码
Nov 26 PHP
php目录操作函数之获取目录与文件的类型
Dec 29 PHP
利用phpExcel实现Excel数据的导入导出(全步骤详细解析)
Nov 26 PHP
php删除数组元素示例分享
Feb 17 PHP
PHP @ at 记号的作用示例介绍
Oct 10 PHP
轻松实现php文件上传功能
Feb 17 PHP
thinkPHP框架整合tcpdf插件操作示例
Aug 07 PHP
PHP常用函数之获取汉字首字母功能示例
Oct 21 PHP
Laravel手动返回错误码示例
Oct 22 PHP
thinkphp5实现微信扫码支付
Dec 23 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
PHP MVC模式在网站架构中的实现分析
2010/03/04 PHP
PHP语法小结之基础和变量
2015/11/22 PHP
php实现微信公众号主动推送消息
2015/12/31 PHP
magento后台无法登录解决办法的两种方法
2016/12/09 PHP
PHP使用PDO操作sqlite数据库应用案例
2019/03/07 PHP
javascript操作JSON的要领总结
2012/12/09 Javascript
用jquery实现点击栏目背景色改变
2012/12/10 Javascript
javascript延时加载之defer测试
2012/12/28 Javascript
jquery打开直接跳到网页最下面、最低端实现代码
2013/04/22 Javascript
jQuery插件实现带圆点的焦点图片轮播切换
2016/01/18 Javascript
Angular.Js中过滤器filter与自定义过滤器filter实例详解
2017/05/08 Javascript
Jquery+Ajax+xml实现中国地区选择三级联动菜单效果(推荐)
2017/06/09 jQuery
轻松搞定jQuery+JSONP跨域请求的解决方案
2018/03/06 jQuery
浅析Vue.js中v-bind v-model的使用和区别
2018/12/04 Javascript
Vue 进阶之路(三)
2019/04/18 Javascript
ES6常用小技巧总结【去重、交换、合并、反转、迭代、计算等】
2019/12/21 Javascript
JavaScript检测是否开启了控制台(F12调试工具)
2020/10/02 Javascript
Python排序搜索基本算法之冒泡排序实例分析
2017/12/09 Python
Python反射的用法实例分析
2018/02/11 Python
Python从数据库读取大量数据批量写入文件的方法
2018/12/10 Python
TensorFlow基于MNIST数据集实现车牌识别(初步演示版)
2019/08/05 Python
python+django+selenium搭建简易自动化测试
2020/08/19 Python
python语言time库和datetime库基本使用详解
2020/12/25 Python
python 邮件检测工具mmpi的使用
2021/01/04 Python
HTML5标签大全
2016/11/23 HTML / CSS
AmazeUI在模态框中嵌入表单形成模态输入框
2020/08/20 HTML / CSS
华为慧通笔试题
2016/04/22 面试题
星空联盟C# .net笔试题
2014/12/05 面试题
UNIX文件类型
2013/08/29 面试题
协议书样本
2014/04/23 职场文书
政工例会汇报材料
2014/08/26 职场文书
学校三八妇女节活动总结
2015/02/06 职场文书
网吧管理制度范本
2015/08/05 职场文书
python基础之停用词过滤详解
2021/04/21 Python
nginx服务器的下载安装与使用详解
2021/08/02 Servers
Mysql中mvcc各场景理解应用
2022/08/05 MySQL