php学习笔记--函数

与其他语言类似,php函数可以传参,可以有返回值,但也有不同之处,如变量函数

目录

常规传参

<?php
    /*
     *  @param number $a
     *  @param number $b
     *  @return number
     */
    function add($a, $b){
        return $a+$b;
    }

    echo add(10.5, 11);   //21.5

引用传参

引用传参必须传变量,不能传常量。

<?php      
    function show(&$a) {  //变量前加&符号传递引用
        $a = 20;
    }
        
    $b = 10;
    echo $b."<br>";  //10
    show($b);
    echo $b."<br>";  //20

默认参数

php函数可以指定默认值,如果没有传递参数,则使用默认值,指定默认值顺序必须从右向左。

<?php
    function add($a, $b, $c=10){
        return $a+$b+$c;
    }

    echo add(50,60)."<br>";      //120
    echo add(50,60,20)."<br>"; //130

可变个参数

php函数可以使用函数 func_get_args() 获取所有参数,它返回一个数组;可以使用 func_num_args() 获取参数总数;使用函数func_num_arg(i)获取第i个参数。

<?php
    function add(){
        //$arr = func_get_args();  //获取所有参数
        $sum = 0;
        for($i=0;$i<func_num_args();$i++){
            $sum += func_get_arg($i);
        }
        return $sum;
    }

    echo add(1,2,3,4,5);  //15

变量函数

变量函数是指将函数名字存储在变量中,根据变量的值不同可以调用不同的函数,在其他语言中要想实现变量函数非常繁琐,而在php中可以直接使用变量函数。

<?php
    function add(){
        //$arr = func_get_args();  //获取所有参数
        $sum = 0;
        for($i=0;$i<func_num_args();$i++){
            $sum += func_get_arg($i);
        }
        return $sum;
    }

    $func_name = "add";
    echo $func_name(2,4,6);  //12

 回调函数

在函数调用时,如果参数中传的不是一个变量或一个值,而是一个函数,这就是回调函数参数。

<?php
    function filter_range($num, $func){
        for($i=0;$i<$num;$i++){
            if($func($i)) continue;
            echo $i."<br>";
        }
    }

    function filter($i){
        if($i%3==0 || $i%5==0)
            return true;
        else
            return false;
    }

    filter_range(10,"filter");  //1 2 4 7 8

 在php中经常使用回调函数 call_user_func() 和 call_user_func_array() 来回调执行函数,它非常类似于JavaScript中的函数 call() 和 apply() 。但是JavaScript中这两个回调函数能够改变this的指向,而php的作用只是传参,和直接调用没什么区别(??),可能好处就是 call_user_func_array() 能够传递数组(还有就是调用类的静态方法)。

<?php
        function add($a, $b){
        return $a+$b;
    }
        echo call_user_func("add", 1, 2);  //3
    echo call_user_func_array("add", array(1,2));  //3

 递归函数

直接和间接的调用自己的函数叫做递归函数。

<?php        
        function factorial($num) {
        if($num>1) {
            return $num * factorial($num-1);
        } else {
            return 1;
        }
    }

    echo factorial(5);   //120

 加载自定义函数库

php可以使用 include 包含自定义的php文件函数库,注意:include不是简单的copy到当前文件,对于非php文件它还有执行的功能。

<?php
    include "function.inc.php";   //相当于copy
    include "head.html";   //非php文件解析html文件并显示
    include "demo.txt";

    my_add(1,2);    //执行function.inc.php函数

在大型设计中可能会include一个函数库多次,那么函数就会重复定义,可以用 include_once 解决重复包含的问题,但是建议使用 include ,因为include效率高。

类似的,包含其他文件还可以使用 require 和 require_once ,require和include函数几乎等价,区别在于在脚本执行时包含,当处理失败时,include产生一个警告,而require则导致一个致命的错误。因此建议包含关键性文件时使用require函数,包含非关键性文件时使用include

posted @ 2017-12-19 22:18  星雨夜澈  阅读(238)  评论(0编辑  收藏  举报