读书篇:《细说PHP》三、PHP的语言结构

读书篇:《细说PHP》三、PHP的语言结构今天我们继续读 细说 PHP 第六章 本章主要讲两个部分 流程控制语句 函数 先来分析流程控制 书中如此描述 流程控制对于任何一门编程语言都至关重要 它提供了控制程序步骤的基本手段 是程序的核心部分 在任何一门程序设计语言中 都需要支持满足程序结构化所需的三种基本结构 顺序结构 主要是程序自上而下顺序执行 分支结构 可以叫条件结构 会在程序执行中按条件判断来改变程序执行的顺序 循环结构 重复执行程序的操作 我们一个一个来分析 顺序结构的语句主要就是赋值 输入 输出等就不多做介绍啦

今天我们继续读《细说PHP》,第六章,本章主要讲两个部分,流程控制语句,函数。

先来分析流程控制,书中如此描述:流程控制对于任何一门编程语言都至关重要,它提供了控制程序步骤的基本手段,是程序的核心部分。

在任何一门程序设计语言中,都需要支持满足程序结构化所需的三种基本结构:

  • 顺序结构:主要是程序自上而下顺序执行。
  • 分支结构:可以叫条件结构,会在程序执行中按条件判断来改变程序执行的顺序。
  • 循环结构:重复执行程序的操作。

我们一个一个来分析:

顺序结构的语句主要就是赋值、输入/输出等就不多做介绍啦。

分支结构(条件结构)它有几种形式:

  1. 单一条件分支结构:就是单独的if语句。
  2. 双向条件分支结构:if语句中包含else子句。
  3. 多项条件分支结构:在if和else组合中加入了elseif子句(switch也是多项条件分支结构)。
  4. 巢状条件分支结构:if 语句嵌套,就是在if和else语句块中又包含if语句。

循环结构:php提供了三种循环:

  1. while循环:条件型循环语句,根据判断条件多布尔值来进行循环控制。
  2. do-while循环:也是条件型循环语句,它和while区别在于,do-while至少会执行一次(这个php实际应用中很少)。
  3. for循环:计数型循环语句。

不得不提一下,while和for虽然是不同的循环语句,但他们可以做相同的事情,只不过在自己的领域里更加高效,这个我们在以后分析php内核机制时候会看到底层他们的处理方式。

下面我们重点来说一下for,因为for在php实际开发中使用很广泛。

for循环由三个表达式组成:

 for(初始化;表达条件式;增/减量){ #循环体 } 

不写花括号php也会识别到,但建议还是写上,代码规范一些

  • 初始化:第一次进入循环时,变量的初始赋值。
  • 条件表达式:判断条件是否结束循环。
  • 增/减量:执行完循环体之后根据控制循环变量的增减方式。

( for语句中的三个表达式,可以是一个多个或者是空的,具体可以自己写代码测试一下 )

php还有特殊的控制语句

  1. break终止循环,continue跳过循环他们是在循环体内使用。
  2. exit常被用于断点调试,作用是终止脚本执行。

php中这些流程控制语句不是彼此独立的,他们一般都是相互配合使用,互相嵌套,来完成实现程序的目的。

但随着业务的增加,编程量变大,程序结构重复性增多,这样造成了开发和维护成本,解决这个问题是将php设计成模块化结构,就是函数。

php本身就有很多内置函数,同时支持扩展,可以编写php扩展进行编译之后使用。

我们主要来说php自定义函数,也是实际开发中最为常用的。

php自定义函数都是独立的,它被用来执行特定的业务,同时具有重用性,可维护性,开发效率高。

函数使用function来声明,可以有0个或多个参数,也可以给参数赋初始化值。

 function 函数名(参数0,参数1......参数N,参数=赋值){ 
    #函数体 } 

函数的变量使用,有全局变量,局部变量,静态变量。

  • 全局变量:也称作外部变量,是定义在函数外部的,函数内部不能直接使用,需要用到global。
  • 局部变量:只作用于函数内部。
  • 静态变量:属于局部变量的一种,静态变量在函数使用后不被释放。

比较复杂的函数,递归

递归就是自己调用自己,在函数体内部直接或间接的调用自己

递归的作用通常被用来处理一些复杂的运算操作,例如,列表,动态树型菜,单遍历目录等。

递归的执行时会附加一个条件判断,判断是否需要执行递归,并在特定条件下终止,并返回上一层。

值得注意的是,使用递归如果诶呦条件判断可能会造成死循环。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/231589.html原文链接:https://javaforall.net

(0)
上一篇 2025年12月3日 下午1:01
下一篇 2025年12月3日 下午1:22


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号