PHP 简介04-函数

1.函数 function

1.定义:

​ 用来执行特定任务,实现某种功能

2.分类:

​ 系统函数:PHP自带的函数,如数学,字符串,数组,时间…

​ 自定义函数:用户根据具体的需求来设计的函数

3.自定义函数

​ 1.格式:

function 函数名(参数1,参数2,...){代码块}

​ 2.注意事项:

​ 1) function 关键字不能少;

​ 2)函数名不区分大小写;

​ 3)参数(也称形参)可以写也可以不写,具体根据需求决定;

​ 4)代码块:函数功能的主要部分;

4.特性:

  • 函数不调用不会自动执行
  • 没有执行函数时,依旧会检测里面的语法,若有错误,程序报错
  • 函数互不影响,可以互相调用
  • 调用函数和定义函数的先后顺序没有要求

5.调用函数

函数名();

6.函数名

1 函数的命名规范:

​ 由数字,字母和下划线组成,但不能由数字开头

2 函数名不区分大小写

3 函数命名要求

​ 有意义,以提高可读性(动词+名词)

4 函数命名方式:

1.小驼峰命名法:

​ 从第二个单词开始,首字母大写 getUserName

2.大驼峰命名法(帕斯卡命名法)

​ 每个单词的首字母都大写 GetUserInfo

3,下划线命名法

​ 每个单词之间用下划线隔开 var_dump

5 函数名不允许重复

7.返回值 return

1.关键字:

return

2.格式:

return 内容

3.流程:

​ 当程序执行到 return 时,马上将“内容”返回到调用函数的地方

4.返回状态:

  • 自然返回:函数中的代码全部执行完,自动回到调用函数的地方

没有返回值时,强行接收,只能得到null

  • 提前返回:函数中执行了return,马上结束函数,并返回到调用函数的地方

当程序执行到return时,立马返回,带了一个内容,如果想带两个变量回去,可以将多个变量存入同一个数组中,并return数组。

8.参数

1.定义:

​ 参数分为实参(实际参数)和形参(形式参数)

​ 实参—— argument ,在调用函数时给的具体参数

​ 形参——parameter ,在定义函数时给的某一类参数形式

2.参数接收

1)实参个数=形参个数 (匹配完美)

​ 实参与形参会一一对应,相互匹配接收

2)实参个数>形参个数

​ 和形参匹配的前几个实参一一接收,后面多余的实参会被抛弃

3)实参个数<形参个数

​ 多余的形参通常会采用之前设置的默认值,若没有默认值,则会被当做未定义变量

9.可变长度参数的函数

当实参个数为一个不确定值时,称为可变长度参数的函数

  • 接收所有实参(数组形式) func_get_args()
  • 单独获取键为N的实参 func_get_arg(N)
  • 统计一共有多少个实参 func_num_args()

当不知道有多少实参时,形参一个都不要写,用上述函数接收数据

1
2
3
4
5
6
7
8
9
10
11
// 需求:
// 根据传入的多个实参, 进行求和
function add()
{
$sum=0;
$count=$func_num_args();
for($i=0;$i<$count;$i++){
$sun+=func_get_arg($i);
}
return $sum;
}

10.函数设计准备

1.设计函数名:

​ 具体功能描述

2.考虑参数设置:

  • 功能中需要输入几个参数
  • 参数需不需要设置默认值

3.核心功能

​ 其中缺乏的数据,可以先模拟出来,保证结果是有效的

4.补充

​ 缺什么补什么,把模拟数据扩展为灵活数据

1
2
3
4
5
6
7
8
9
//需求:获取 x~y 之间的偶数
function getEven($x,$y)
{
for($i=$x;$i<$y;$i++){
if($i%2 == 0){
$result[]=$i;
}
}return $result;
}

2.变量作用域

1.定义:

​ 变量能够作用的区域。

2.分类

全局变量:在函数外部声明的变量

局部变量:在函数内部声明的变量

3.规则:

  • 全局变量无法直接在局部作用域中使用
  • 局部变量不能直接在全局作用域中使用
1
2
3
4
5
6
7
8
$a=100;			#全局变量
function demo()
{
$b=200; #局部变量
echo $a; #失败
}
demo(); #null,函数内部声明的变量,在函数结束时,所有的值会被释放
echo $b #失败,输出时,会输出全局$b,若找不到就报错

4.改变作用域

  • 将全局变量作用域扩展至局部变量:

    通过超全局数组获得全局变量, $GLOBALS['a'] 用于存储所有全局可用的变量

  • 将局部变量作用域扩展至全局;

    通过使用 global 给局部变量赋予令牌,使其能够在全局中使用。

5.常量

1
2
3
4
5
6
7
8
9
10
const CHINA='zhongguo';		#全局定义常量
function demo()
{
echo CHINA; #正常输出,可以直接在局部中使用
const NAME='cheng'; #不能在函数中通过const定义局部常量
define('AGE',20); #可以用define( )定义成功,但不推荐
echo AGE
}
demo();
echo AGE;

小结:常量在本质上是没有作用域的。

6.静态变量

​ 1.定义:在函数中,被声明为静态变量的值,函数执行结束后不会被释放,而是在下一次调用同函数时,直接使用上一次的静态值结果。

​ 2.关键字: static

​ 3.多个不同函数中,出现相同的静态变量,这些静态变量互不影响。

1
2
3
4
5
6
7
8
function demo()
{
static $num = 10; # 静态初始值
echo $num.'<br>';
$num++;
}
demo(); #10
demo(); #11