[TOC]
>[success]PHP 的真正力量来自它的函数:它拥有几千个内建的函数。
函数(function)是一段完成指定任务的已命名代码,函数可以遵照 给它的一组值或参数完成任务,并且可能返回一个值。使用函数可以 节省编译时间,因为无论调用多少次,函数只需被编译一次。
**优点**
1. 控制程序设计的复杂性
2. 提高软件的可靠性
3. 提高软件的开发效率
4. 提高软件的可维护性
5. 提高程序的重用性
6. 用户定义函数
## 语法
~~~
<?php
function 函数名称(参数1,参数2 …){
程序内容叙述;
return 返回值; //如需函数有返回值时使用;
}
?>
~~~
## 函数的使用
~~~
函数名称(参数1,参数2 …);
$返回值变量 = 函数名称(参数1,参数2);
~~~
### 函数名
它是函数在程序代码中的识别名称,函数名可以是以字母或下划线 开头后跟零个或多个字母、下划线和数字的任何字符串。函数名不 区分大小写。命名函数时不可使用已声明的函数,或PHP内建的函 数名称。
### 参数
所谓的参数就是用来把数值由函数外部传入函数体中,并用来加以 运算处理。参数之间用“ ,”号隔开。当函数不需要任何数值传入 时,可以省略参数。
### 返回值:
当调用函数时需要它返回一些数值,那么就要函数体中用return语 句实现。格式如下:
~~~
<?php
function sum($num1, $num2){
return $num1+$num2;
}
$i = sum(10,20);
var_dump($i);
?>
~~~
## 变量的作用域
### 变量的能见度
所谓变量的能见度,意指变量在程序中的可作用范围。当一个变量 执行赋值动作后,会随着声明局部的差异,而有不同的作用范围。 大致上来说变量会依据声明的局部分为下列两种:局部变量和全局 变量
### 局部变量
在函数之中声明的变量就是局部变量,并且该变量只有在函数范围之中 才能加以使用。如果其它程序局部需要调用使用该变量值时,必须透过 「return」指令,来将其传回至主程序区块以作后续处理。
### 全局变量
在函数范围之外声明的变量为全局变量,在函数内无法直接使用全局变量,函 数要使用全局变量,必须要利用global引入。
**实例**
~~~
<?php
$xbs="学并思";
function p() {
global $xbs; //利用 global 引入全局变量
echo $xbs;
}
p();
?>
~~~
## 静态变量
PHP支持声明函数变量为静态的(**static**)。一个静态变量在所有对该函数的 调用之间共享,并且仅在脚本的执行期间函数第一次被调用时被初始化。要声明函数变量为静态的用关键字static。通常,静态变量的第一次使用 时赋予一个初始值。
## 变量函数
PHP 支持变量函数的概念。这意味着如果一个变量名后有圆括号, PHP 将寻找该变量的值同名的函数,并且将尝试执行它。除了别的 事情以外,这个可以被用于实现回调函数,函数表等等。
## 递归调用
所谓的函数递归调用,就是函数可以在其声明的执行中调用 执行自己。
函数递归调用最大的好处在于可以精简程序中繁杂重复调用程序, 并且能以这种特性来执行一些较为复杂的运算动作。
## include 和 require 语句
通过 **include**或 **require** 语句,可以将 PHP 文件的内容插入另一个 PHP 文件(在服务器执行它之前)。
**include** (或 **require**)语句会获取指定文件中存在的所有文本/代码/标记,并复制到使用 include 语句的文件中。
**include** 和 **require** 语句是相同的,除了错误处理方面:
1. require 会生成致命错误(E_COMPILE_ERROR)并停止脚本
2. include 只生成警告(E_WARNING),并且脚本会继续
3. include_once()和require_once()函数
和`include()`语句及`require()`类似,区别是如果该文件中的代码已 经被包括了,则不会再次包括。
这两个函数用于在脚本执行期间同一个文件有可能被包括超过一次 的情况下,以避免函数重定义,变量重新赋值等问题。
>[danger]练习: 创建一个自定义函数文件,自定义一个跟var_dump类型的函数,并在其它脚本中使用
- 序言
- 第一章:准备工作
- 写在学习之前的话
- web应用开发结构
- 开发工具/环境
- 第二章:展现层面(HTML/CSS)
- HTML简介
- HTML基础
- HTML编码
- HTML链接
- HTML图像
- HTML列表
- HTML表单
- HTML表格(分水岭)
- HTML 实体
- HTML框架
- CSS层叠样式表
- CSS选择器
- CSS文本/字体
- CSS继承和叠加
- CSS框模型
- CSS浮动(分水岭)
- CSS定位
- CSS背景
- CSS图标字体
- CSS补充
- 开发技巧
- 第三章:展现层面(Javascript)
- JS简介
- JS实现
- JS输出交互
- JS变量
- JS数据类型
- JS运算符
- JS流程控制(分水岭)
- JS函数
- JS数组
- JS对象(分水岭)
- JS数组对象
- JS字符串对象
- JS数学对象
- JS日期对象
- JS BOM对象(分水岭)
- JS DOM对象
- JS事件对象
- JS元素对象
- JS DOM节点
- 第四章:展现层面(Jquery)
- JQ简介
- JQ使用
- JQ选择器
- JQ筛选
- JQ属性
- JQ-CSS
- JQ事件
- JQ文档处理
- JQ效果
- JQ-ajax
- 第五章:逻辑/业务层面(PHP)
- PHP简介
- PHP变量
- PHP数据类型
- PHP常量
- PHP运算符
- PHP流程控制
- PHP函数(分水岭)
- PHP日期
- PHP数学
- PHP数组
- PHP字符串
- PHP正则表达式(分水岭)
- PHP目录操作
- PHP文件
- PHP上传/下载
- PHP面向对象(分水岭)
- PHP图像处理
- PHP会话控制
- Ajax异步处理
- PHPMysql扩展
- PHPMysqli扩展
- PHPPdo扩展
- PHP接口
- PHP命名空间
- 第六章:逻辑/业务层面(框架设计)
- 第七章:存储层面(mysql)
- Mysql基础
- Mysql Sql简介
- Mysql数据库
- Mysql数据类型
- Mysql数据表
- Mysql操作记录
- Mysql查询
- Mysql修改表结构
- Mysql日期与时间
- Mysql分组统计
- Mysql多表查询
- Mysql安全
- Mysql存储引擎
- Mysql事务
- Mysql视图
- Mysql触发器
- Mysql存储过程
- Mysql存储函数
- Mysql优化
- 第八章:服务器(Linux)
- Linux介绍与安装
- Shell
- 目录与文件操作
- VIM编辑器使用
- 帐号管理
- SUDO
- 权限控制
- 压缩与打包
- 软件安装
- 计划任务
- 进程管理
- 宝塔Linux面板