• 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

  • 相关阅读:
    STL应用 map poj 2418
    STL应用 set hdu 1412
    STL应用 deque hdu 6375
    STL应用 queue poj 1915
    STL应用 map HDU 3527
    算法训练营 入门篇 STL应用 vector HDU 3527
    算法训练营:海量图解+竞赛刷题(入门篇)刷题, 算法基础知识点讲解与练习
    BFS 遍历例子
    【知识】MySQL索引原理及慢查询优化
    【MySQL优化】——看懂explain
  • 原文地址:https://www.cnblogs.com/dxs959229640/p/8068029.html
Copyright © 2020-2023  润新知