PHP基础-自定义函数

一、函数的声明

  • 语法:
function 函数名([arg1][,arg2]...[,argN]){
    .....函数体功能代码段...
    return 返回值;                    //没有返回值则为NULL
}
  • 参数:

    • 按值传参
    • 引用传参
  • 栗子:

$a=10;
$b=11;

//按值传参
function f1($a=2,$b=3){
    $a=$a+1;
    $b=$b+1;
    echo $a.','.$b.'</br>';
}
/*按值穿参,不会改变外部变量*/
f1($a,$b);                      //11,12
echo $a.','.$b.'</br>';         //10,11
f1($a,$b);                      //11,12

//用&方式,表示引用传参
function f2($a=3,&$b=4){
    $a=$a+1;
    $b=$b+1;
    echo $a.','.$b.'</br>';
}

/*按值穿参,不会改变外部变量*/
f2($a,$b);                      //11,12
echo $a.','.$b.'</br>';         //10,12
f2($a,$b);                      //11,13
  • 特点:
    • 参数可以有默认值,默认值必须是常量表达式(标量类型),不能是诸如变量,类成员,或者函数调用等
    • php函数支持可变数量的参数列表

二、函数的特性

  • 函数名命名与变量、常量命名规范相同
  • 函数名不区分大小写
  • 函数名必须是唯一的
  • 函数不会自己发挥作用,只有在调用的时候才会执行并发挥作用
  • 函数可以有返回值,但只能有一个返回值,返回值可以是任何php支持的数据类型
  • php支持可变函数,他的实质就是可变变量

三、函数的动态调用(可变变量的实质)

/*函数动态调用*/
function t(){
    return 'test';
}
$str="t";
echo $str();    // $str()  等价于  t()

/*可变变量*/
$h="hello";
$hello="hello world";
echo $$h;   // $$h  等价于  $($h)  等价于  $hello  等价于  "hello world"

四、函数内的局部变量

  • 函数内的变量有两种,以下两种变量仅在函数内有效:
    • 局部变量(local):函数内部声明的变量
    • 局部静态变量(static):函数内部使用关键字static声明的变量。静态变量的值不能是表达式的值,只能是标量值
  • 变量知识补充:
    • 全局变量(global):在全局声明的变量,全局有效
    • 变量的销毁和检测
  • 栗子:
$a=10;
function f1($a=123){
    echo $a;        //123
    $a++;
    echo $a;        //124
    global $a;      //指定函数内变量使用的是全局变量
    $a++;
    echo $a;        //11
}
echo $a;        //10
f1();
echo $a;        //11


function f2(){
    $a=100;                     //普通局部变量在每次函数被调用时都会被初始化
    static $num=100;            //静态局部变量,它的值只能是标量值,在函数首次被调用时被初始化
    $a++;
    $num++;
    echo $a,$num;
}
/*静态局部变量所做的静态计数器*/
f2();                //101  101
f2();                //101  102
f2();                //101  103

五、函数和业务代码分离(包含文件)

  • 函数抽离成单独文件:
<?php
    /*func.php文件*/
    function test(){
        echo 'testests';
    }
  • 四种引入方式:
    • include:
      • 如果引入文件有错误,代码尽可能的往下执行
      • <?php
          /*1.php文件*/
          include 'func.php';        //实质就是将func.php文件的代码复制在次行
          include 'func.php';        //如果重复引用则会报“函数重名错误”,test函数有两个
        
    • require:如果引入文件有错误,代码立即终止执行
    • include_once:
      • 只会引入一次,如果在此之前已经引用过则不会再次引入
      • <?php
          /*1.php文件*/
          include_once 'func.php';        //include_once会检测当前是否已经包含这个文件
          include_once 'func.php';        //已经包含fun.php 所以此文件不会再被引入
        
    • require_once
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 定义 函数是一个被命名的,独立的代码段,它执行特定的任务,并可能给调用它的程序一份返回值。 PHP的模块化程...
    楠哥哥_0b86阅读 3,788评论 1 2
  • 考点:变量的作用域和静态变量 延伸:函数的参数及参数的引用传递,函数的返回值及引用返回,外部文件的引入,系统内置的...
    ZhouJiping阅读 3,635评论 0 0
  • 目录### 一、函数的定义二、自定义函数三、函数的工作原理和结构化编程四、PHP变量的范围五、声明及应用各种形式的...
    akon2016阅读 4,245评论 1 1
  • 引言 PHP的教程我还是按照所用即所得的方式来写吧,本身对PHP的认识也不系统,因此,摸着石头过河,披荆斩棘吧~ ...
    OzanShareing阅读 3,480评论 2 4
  • 青山巍然不动 站着,不说话 那无喜无欢的样子 多么可爱,生动如人 寂寞,只能被挡在山后 快乐,只能从你头顶兀自漫过...
    木子又二土阅读 2,507评论 0 2