0

0

PHP编程与应用(2)_PHP

php中文网

php中文网

发布时间:2016-06-01 12:35:08

|

956人浏览过

|

来源于php中文网

原创

第五章  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
   print $i++; /* the printed value would be $i before the increment (post-   

    increment) */

  }



  /* example 2 */

   $i=1;

   while ($i
   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
      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); 

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

286

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

126

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

42

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

19

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

23

2026.02.13

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

29

2026.02.12

雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法
雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法

本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。

14

2026.02.12

豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法
豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法

本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。

421

2026.02.12

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

51

2026.02.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Node.js 教程
Node.js 教程

共57课时 | 11.4万人学习

CSS3 教程
CSS3 教程

共18课时 | 5.6万人学习

Git 教程
Git 教程

共21课时 | 3.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号