zoukankan      html  css  js  c++  java
  • php 函数

    函数:定义形式:

    function  函数名 (形参1,形参2,.... )

    {

    //函数体(代码块)

    }

    函数调用:①没有返回值的函数,调用语句是独立语句

    函数名(实参1,实参2, .... );   实参个数应该跟形参有匹配性。

    ②有返回值的函数,调用语句会“混杂”在别的语句中,并将该调用语句当作一个“数据”来使用:

    A: $v1 =  函数名();   赋值给其他变量;这里省略实参语法,下同。

    B: $v1 =  函数名() * 3 + 6;   参与运算,然后再赋值;

    C: echo  函数名();   直接输出

    D: echo  函数名() * 3 + 6;   参与运算,然后再输出

    E: $v1 = 函数名2( 函数名() , 实参2,实参3, .... );   当作实参使用

    函数参数问题:形参与实参

    形参:变量;只在该函数中有效;在函数中执行时有效,函数结束,变量“销毁”。

    实参:“实际数据”;作用是将自身数据“赋值给”形参变量

    形参与实参应有“一一对应”关系。

    定义形式:   function  函数名(形参1,形参2,...... ){ 。。。。}

    调用形式:        函数名(实参1,实参2,..... )    (一一对应)

    默认值参数:function  click(num=1){    (num=1就是默认值参数)

            代码

          }

    默认值只能是常量表达式,或常量,不能是变量。

    函数传值问题:

    ①默认都是值传递

    ②如果实参本身就是“直接数据”,则不存在传值问题,而是简单的“赋值”。

    ③让某个参数(形参)以引用传递的方式来传值:引用传递的形参(实参),在函数内部改变其值,在函数外面的实参,也会相应修改。

    参数数量问题:

    ①通常,实际参数的数量应该跟形式参是的数量一致。

    ②如果形式参是中有默认值,则实际参数的对应项可以省略。即:实参的个数,至少应该不少于形参中的非默认值参数的个数。

    三种系统函数: 

    func_get_args(); //获得一个函数所接收到的所有实参数据,并结果是一个数组

    func_get_arg(n); //获得一个函数所接收到的第n个实参数据(n从0开始)

    func_num_args(); //获得一个函数所接收到的所有实参数据的个数

    函数返回值:通常是值传递。也可以引用传递,具体形式:

    function  &函数名(形参1,形参2,.....)   注意函数名前有个引用符号“&”

    {

    $result = 0; //初始化。。。。。。

    return $result;   此时返回数据,只能是变量

    }

    调用函数:

    $v1 =  &函数名(实参1,实参2,....);   引用返回的函数,自然是指有返回值。 

    可变函数:

    function f1(){

      echo "<br>函数f1被调用;";

    }

    $str1="f1";  

    $str1();  调用可变函数(函数名此时是一个变量,内容是一个函数名)

    匿名函数:未命名的函数

    ①$f1=function(){...函数体}    定义形式上没有名字,其实将赋值给了变量$f1

    ②调用其他函数2(匿名函数,实参1,实参2, ......)

    【1】此形式的匿名函数只有定义的函数体(无函数名)

    【2】此形式的匿名函数只能作为其他函数调用时的参数(其他函数通常有特定用处)

    【3】此匿名函数会在调用其他函数的“过程中”被执行。

    call_user_func_array(匿名函数,数组);

    将数组的每一项当作该匿名函数的若干个实参,传递到该匿名函数中,并执行该匿名函数,并可以从该匿名函数中返回数据。

    echo"<hr>";

    cal_user_func_array(

      function($m1,$m2,$m3){

        echo"<br>m1=$m1";

        echo"<br>m2=$m2";

        echo"<br>m3=$m3";

      }

      ,array(1,2,3)

    );

    echo<hr>;

    $a1=aray(1,2,3,4,5,1);

    $s=call_user_func_aray(

      function(){  可见这个匿名函数作用是求一个数组的“总和”

        $a=func_get_args();  取得传递过来的所有实参

        $sum=0;

        foreach($a as $v){

          $sum += $v:

        }

        return $sum;

      }

      ,$a1

    );

    echo "<br>和为:$s";

    变量作用域:

    局部作用域:只能在所定义的函数范围内使用。

    全局作用域:在函数的“外部”范围使用。

    php中,局部和全局作用域是不重叠的。

    超全局:就是在函数的内部和外部都可以使用。

    超全局变量系统定义,我们不能创建超全局变量。

    静态局部作用域:其实也是局部,但多一个特征:数据能够在函数退出后仍然保持不丢失。

    局部访问全局变量:global  $变量名

    $v1=10;  全局

    functon f3(){  局部

      golbal $v1;  访问全局变量$v1

      echo"<br>v1=$v1";

      $v2=20;

    }

    f3();

    全局访问局部变量:

    $v1 = 10;

    function  f1( &$p1, $p2){ ...... } //$p1是函数的形参,也即就是函数的内部(局部)变量

    $v2 = f1( $v1, 10); //此时我们认为$v1就可以使用函数中$p1的值。

    几种有关函数的系统函数:

    ①function_exists():  判断某个函数是否被定义过,返回布尔值

    if(  function_exists(“ func1 “)  == false ){

    function  func1(){。。。。。。};  定义函数

    }

    ②func_get_arg(n):获得一个函数的第n个实参值(n从0开始)

    ③func_get_args():获得一个函数的所有实参,结果是一个数组

    ④func_num_args():获得一个函数的所有实参的个数。

  • 相关阅读:
    JQuery缓冲加载图片插件lazyload.js的使用方法
    CSS3阴影 box-shadow的使用和技巧总结
    HTML符号大全
    TouchSlide
    响应式图片的3种解决方案
    ECMAScript arguments 对象
    call() 方法 和 apply()方法详解
    字体图标 iconfont cssfont
    响应式样式
    1-微信小程序创建项目
  • 原文地址:https://www.cnblogs.com/plmokn/p/8360411.html
Copyright © 2011-2022 走看看