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实现ping
Oct 09 PHP
PHP 源代码压缩小工具
Dec 22 PHP
zend framework多模块多布局配置
Feb 26 PHP
php array_filter除去数组中的空字符元素
Jun 21 PHP
php从右向左/从左向右截取字符串的实现方法
Nov 28 PHP
php模拟post行为代码总结(POST方式不是绝对安全)
Feb 22 PHP
介绍一些PHP判断变量的函数
Apr 24 PHP
PHP字符串的编码问题的详细介绍
Apr 27 PHP
关于js和php对url编码的处理方法
Mar 04 PHP
php使用标签替换的方式生成静态页面
May 21 PHP
PHP获取用户访问IP地址的5种方法
May 16 PHP
PHP实现的XXTEA加密解密算法示例
Aug 28 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 heredoc和phpwind的模板技术使用方法小结
2008/03/28 PHP
PHP的cURL库功能简介 抓取网页、POST数据及其他
2011/04/07 PHP
zend framework文件上传功能实例代码
2013/12/25 PHP
php获取参数的几种方法总结
2014/02/18 PHP
php计算当前程序执行时间示例
2014/04/24 PHP
教你如何在CI框架中使用 .htaccess 隐藏url中index.php
2014/06/09 PHP
php实现监控varnish缓存服务器的状态
2014/12/30 PHP
PHP的Socket通信之UDP通信实例
2015/07/02 PHP
js 页面输出值
2008/11/30 Javascript
jQuery+jqmodal弹出窗口实现代码分明
2010/06/14 Javascript
jQuery判断元素是否是隐藏的代码
2011/04/24 Javascript
容易被忽略的JS脚本特性
2011/09/13 Javascript
jquery实现页面图片等比例放大缩小功能
2014/02/12 Javascript
DOM基础教程之模型中的模型节点
2015/01/19 Javascript
js实现上传图片预览的方法
2015/02/09 Javascript
jQuery检测返回值的数据类型
2015/07/13 Javascript
CSS图片响应式 垂直水平居中
2015/08/14 Javascript
Javascript函数式编程语言
2015/10/11 Javascript
浅谈JavaScript的全局变量与局部变量
2016/06/10 Javascript
AngularJS bootstrap启动详解及实例代码
2016/09/14 Javascript
jquery事件绑定解绑机制源码解析
2016/09/19 Javascript
JavaScript实现HTML5游戏断线自动重连的方法
2017/09/18 Javascript
jQuery pjax 应用简单示例
2018/09/20 jQuery
JS 封装父页面子页面交互接口的实例代码
2019/06/25 Javascript
[35:34]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python if语句知识点用法总结
2018/06/10 Python
终端命令查看TensorFlow版本号及路径的方法
2018/06/13 Python
在pycharm 中添加运行参数的操作方法
2019/01/19 Python
Flask模板引擎Jinja2使用实例
2020/04/23 Python
windows+vscode安装paddleOCR运行环境的步骤
2020/11/11 Python
前端canvas动画如何转成mp4视频的方法
2019/06/17 HTML / CSS
工程业务员岗位职责
2013/12/31 职场文书
潘婷洗发水广告词
2014/03/14 职场文书
社区党建工作汇报材料
2014/10/27 职场文书
河童之夏观后感
2015/06/11 职场文书
SSM VUE Axios详解
2021/10/05 Vue.js