• 第十四节:函数用户自定义函数函数的参数返回值


    用户自定义函数

    一 当我们定义一个函数时,逻辑上函数的作用域是全局的,既可以是定义前,也可以是定义后。如

    1 <?php
    2 foo();
    3 function foo(){
    4   echo 'abc';
    5 }
    6 ?>

    他是可以正常执行的。为什么呢?简单说,PHP是先解释,再执行,他灵活的调用了foo()函数。对于function的位置,因为函数的作用域是全局的,所以只要定义了,那么就可以在任意位置去调用它。但是除了两种情况,函数必须在其调用之前定义,一是在条件语句中定义的函数,二是在函数中定义的函数。例如:

    1 <?php
    2 foo();
    3 if(true){
    4 function foo(){
    5 echo 'abc';    
    6     }
    7 }
    8 ?>
    1 <?php
    2 bar();
    3 function foo(){
    4     function bar(){
    5         echo 'OK';
    6         }
    7     }
    8 ?>

    另外注意函数的几点注意

    函数名是大小写无关的,不过在调用函数时候,通常使用其定义时的形式。

    PHP不支持函数重载,也不可能取消定义或者重定义已声明的函数。

    函数的参数

    *注*函数的参数貌似是全类型。(此处待定)

    此处有一重点就是,通过引用传统参数。这和函数执行的机制有关,当调用foo()时,其实是将$a的值,拷贝到函数内,而由于函数内变量作用域只在函数内,其完全不影响外部结果。而当使用引用传递参数时,是将bar()的$a和外部作用域的$a指向同一内存块

    函数作用域内的$a值改变,那么外部$a也将改变。

     1 <?php
     2 $a=1;
     3 function foo($a){
     4     ++$a;
     5     }
     6 function bar(&$a){
     7     ++$a;
     8     }    
     9 foo($a);    
    10 var_dump($a);// (int)1
    11 bar($a);
    12 var_dump($a);    //(int)2
    13 ?>

    函数的默认参数可以是数组或者特殊类型NULL,但是拥有默认参数的数组必须在没有默认参数的数组右侧。

    函数的返回值

    函数的返回值 有一个重点!

    就是从函数返回一个引用,例如:

    1 <?php
    2 function &foo(){
    3  static $a=1;
    4   return $a;
    5     }
    6 $b=&foo();
    7 $b=5;
    8 echo foo(); // 输出5
    9 ?>

    在函数声明和指派给返回值时都使用引操作符&.  会达成一个效果,就是$b和函数的返回值$a指向同一内存块。其实相当于$a=&$b。

  • 相关阅读:
    ReactJs入门
    Studio-Class Diagram
    Visual Studio-Sequence Diagram
    架构、职责、数据一致性
    Microsoft Build 2015
    Net下无敌的ORM
    SpringMVC1
    插件式Web框架
    ASP.NET的CMS
    Android Drawable绘图学习笔记(转)
  • 原文地址:https://www.cnblogs.com/saw2012/p/2886643.html
Copyright © 2020-2023  润新知