php函数_函数分两大类_自定义函数_深入理解_注意事项

作者: 鲁智深 分类: PHP 发布时间: 2014-12-24 14:37

函数分为两大类

1、自定义函数(自己写的函数)

2、系统函数:php语句本身给你提供,让你直接使用的函数,php设计者认为,在项目开发的过程,很多人都会用一下的功能,则就直接提供给你。

比如:我要取一个数的绝对值?

案例

1
2
3
4
5
6
7
8
9
function myabs($num){
     if($num<0){
       return -$num;
}else{
       return $num;
}
}
echo myabs(45);
echo myabs(90);

如果这样定义就太麻烦,所以php创始者用abs函数搞定绝对值。

案例

1
2
3
$abs = abs(-4.2); // $abs = 4.2; (双精度数double/浮点数float)
$abs2 = abs(5);   // $abs2 = 5; (整数)
$abs3 = abs(-5);  // $abs3 = 5; (整数)

返回参数 number 的绝对值。

自定义函数的基本语法结构

语法:(参数的形参)

1
2
3
4
function 函数名(参数 [,参数],....){
     //函数体,实现业务逻辑代码
     return 返回值//也可以没有返回值
}

2、调用函数

函数名(参数1);通过函数名调用自定义函数(实参)

注意点:

①自定义函数名字不能相同,函数名的命名规则和变量一样

②自定义函数有多个参数,必选参数在前面

③函数名称也可以在变量里,我们称为变量函数

请大家完成这样一个需求1、输入两个数,在输入一个运算符(+,-,*,/),得到结果。如果我们不考虑使用新的技术,用我们的现在的知识结构。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$num1=10;
$num2=10;
$oper="-";
//$res表示运算的结果
$res=0;
   switch($oper){
     case "+":
       $res=$num1+$num2;
       break;
     case "-":
       $res=$num1-$num2;
       break;
     case "*":
       $res=$num1*$num2;
       break;
     case "/":
       $res=$num1/$num2;
       break;
     default:
       echo '运算符号有误';
}
echo "<br/>计算结果是=".$res;

输出:计算结果是=0

从该代码分析,我们发现,如果别的页面也需要这样的功能,则代码的复用性不好。

现在我们使用函数,快速体验一下

示意图

函数示意图

函数示意图

如何封装

//1.function 是一个关键字

//2.jisuan函数名(由程序员取名)

//3.$num1,$num2,$oper是函数的参数列表(形参)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function jisuan($num1,$num2,$oper){
//计算的结果
 $res=0;
 switch($oper){
     case "+":
       $res=$num1+$num2;
       break;
     case "-":
       $res=$num1-$num2;
       break;
     case "*":
       $res=$num1*$num2;
       break;
     case "/":
       $res=$num1/$num2;
       break;
     default:
       echo '运算符号有误';
}
     //表示返回一个结果。
     return $res
}

调用页面

1
2
3
4
5
6
7
8
9
//引入你需要的php文件
require 'funcs.php';

$num1=10;
$num2=10;
$oper="-";
//以后,要计算结果,则可以直接调用函数
$res=jisuan($num1,$num2,$oper);
echo "计算结果是=".$res;

函数调用深入理解

1、安装函数执行的规则,只要看到函数,这php会开辟一个新栈(空间);

2、各个栈间的变量是相互独立的。

流程图

流程图

一个通俗理解方式

流程图二

流程图二

为了加深大家函数的理解举例

案例

1
2
3
4
5
6
7
function abc($n){
    if($n>2){
        abc(--$n);
}
   echo '$n='.$n."<br/>"
}
   abc(4);

输出:

$n=2

$n=2

$n=3

案例分析图

流程图二

案例分析图

函数自己调用自己》这个称为递归调用。

函数使用注意事项

1、参数列表可以是多个参数;

2、参数可以多个,同事,其数据类型可以是php语言的支持的任意类型;

3、函数名开头的字母,以_或者A-Z或者a-z,不要用数字或者特殊字符开头;

4、函数名不区分大小写function abc()和function ABC()是同一个函数;

5、一个自定义函数中d的变量是局部的,函数外不生效;

1
2
3
4
5
6
7
function abc3(){
    $a=45;
    echo 'a='.$a;
}
abc3();

echo 'aa='.$a;//会提示$a没有定义的提示。

报错。

6、使用global全局变量的时候,可使用在函数外的变量,案例

1
2
3
4
5
6
7
$a=12;
function abc3(){
  global $a;//我要在abc3中使用到外层$a;
$a+=45;
}
abc3();
echo $a;

流程图

global流程图

global流程图

在php中有三种提示

notice:注意

waring:警告

error:错误

7、如果在函数中,我们不希望使用某个变量,或者是希望彻底的不再某个变量,则可以使用unset(变量名);将该变量彻底删除。

案例

1
2
3
4
5
6
7
$a=12;
function abc3($a){
    unset($a);//表示不再abc3函数范围内,不在使用$a,后面需要全新定义
    $a=45;
}
abc3($a);
echo $a;

8、在php函数中,我们可以给某些参数,赋一个默认的值。

案例说明

1
2
3
4
5
6
7
8
9
function abc($b,$a=2){
  $res=$a+$b;
  return $res;
}
  $e=70;
echo abc($e).'||';
echo abc($e,90);
$f=70;
echo abc($e,$f);

输出:72||160140

9、php默认是值传递,如果需要引用(地址)传递,可以使用&变量名。

1
2
3
4
5
6
$a=213
 function abc(&$b){
  $b=314;
}
abc($a);
echo $a;

输出:314

流程图

流程图

流程图

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注