PHP基础(四) 学习笔记

目录

一、函数

        1、基本概念

        2、声明语法

        3、调用语法

        4、函数名

        5、可变函数

        6、函数体

        7、return语句

        8、匿名函数

二、函数的参数

        1、形参

        2、实参

        3、形参的默认值

        4、形参的引用传值

        5、伪类型(函数)

        6、相关函数(系统函数)

三、作用域

        1、全局作用域与全局变量

        2、局部作用域与局部变量

        3、global关键字

        4、常量的作用域

        5、预定义变量(超全局变量)

四、变量的生命周期

        1、作用域与生命周期

        2、全局变量的生命周期

        3、局部变量的生命周期 

五、静态变量

        1、定义

        2、原理

六、系统函数

        1、日期时间函数


一、函数

        1、基本概念

                     函数是模块化程序的产物。在实际开发过程中,我们会将一个项目划分为各个大的功能模块,同将大的功能模块划

            分为小的功能。再使用函数将这个最小的功能实现。

                     从编程过程上看,函数就是使用{},将完成的某一功能的代码段封装,再使用function关键字,为这段代码设置一个

            名字,即函数名,函数名后需有() ,表示标记函数名与一般字符串区分,可被调用。

        2、声明语法

                     语法:

                             function funName(形参){

                                  函数体

                                  【return  值】

                            }

        3、调用语法

                     语法:

                             function funName(实参列表);

        4、函数名

                     php中函数名不区分大小写,但我们在编程是一般区分大小写,保证代码的可读性。函数名的命名规则与变量的命

            名规则相同。只能包含字母、数字、下划线。而且以字母或下划线开头。

        5、可变函数

                    

<?php
//模拟从数据库读取的数据
    function hello(){
        echo 'hello','<br />';
    }
    function world(){
        echo 'world'.'<br />';
    }
    $f = 'hello';
    $f();
    $f = 'world';
    $f();

        6、函数体

                     完成某一功能的代码段

        7、return语句

                     在我们使用函数完成一些功能时,有时需要将函数计算的数据或状态传递出来,此时可以使用return。

                     函数处理数据的两个方向

                             其一:外到内,使用实参与形参

                             其二:内到外,使用return

                    函数内可以缺省return,也可有多个return,但遇到一个return就会中断函数的执行

        8、匿名函数

                     没有函数名的函数就是匿名函数(anonymous function),也称之为闭包函数(closure)

                     如果是匿名函数一定记得要以';'结尾

                     提示:

                            js中的函数可以自调用,但是php中的函数无法进行自调用。

                            php中的匿名函数,可以赋给一个变量,还可以用于某个函数的参数。

                    示例:将匿名函数赋值给变量,通过这个变量调用匿名函数

<?php
//模拟从数据库读取的数据
    //将匿名函数赋值给变量
    $f = function(){
        echo __FUNCTION__;
    };
    $f();

                   匿名函数作为回调函数使用

                           回调函数callback:回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。

                    示例:匿名函数作为回调函数(参数)传递

<?php
//模拟从数据库读取的数据
    //将匿名函数赋值给变量
    function showInfo($f){
        $f();
    }
    showInfo(function (){
       echo 'hello';
    });

二、函数的参数

        1、形参

                     函数定义时的参数

        2、实参

                     函数调用时的参数
                     形参与实参让函数更具有通用性

        3、形参的默认值

                     php在定义函数时可以以为形参赋值一个值,这个值就是形参的默认值。

                      在调用函数是,如果没有为具有默认值的形参传递值时,形参采用默认值,反之使用传递过来的值。

                      具有默认值的形参位于形参列表的最右边。

<?php
/*
 * 函数
 */
    function showInfo($l,$i = 100){
        echo $l*$i;
    }
    $a = 10;
    $b = 20;
    showInfo($a,$b);

    showInfo($a);//只传递第一个参数,第二个参数使用形参的默认值

        4、形参的引用传值

                     实参与形参传递默认采用数值传值

<?php
/*
 * 函数
 */
    function my_fun($v1,$v2){
        $v1 = 100;
        $v2 = 200;
        echo $v1,'<br />',$v2,'<br />';
    }
    $a = 10;
    $b = 20;
    my_fun($a,$b);
    echo $a,'<br />',$b,'<br />';

                      php中可以在形参前加&符号,将实参与形参之间的传值方式更改为引用传值

<?php
/*
 * 函数
 */
    function my_fun(&$v1,&$v2){
        $v1 = 100;
        $v2 = 200;
        echo $v1,'<br />',$v2,'<br />';
    }
    $a = 10;
    $b = 20;
    my_fun($a,$b);
    echo $a,'<br />',$b,'<br />';

        5、伪类型(函数)

                     PHP语言本身提供了8钟数据类型。但是在PHP手册中能查到其他几种类型

                     mixed              表示类型不确定          max()函数

                     callbcak          表示函数

                     scalar              标量,int、float、string、bool

        6、相关函数(系统函数)

                     func_get_args();                       用于获取实参,以数组的形式放回

                     func_get_arg(int $arg_num);    从用户自定义函数的参数列表中获取某个指定的参数。$arg_num为偏移量从0开始

                     func_num_args();                    用于获取实参的个数。

                     示例:

<?php
/*
 * 函数
 */
    //求n个数的和
    function getSum(){
        echo '实参的个数为:',func_num_args(),'<br />';
        echo  '第一个实参为:',func_get_arg(0),'<br />';
        echo '<pre>所有的实参如下';
        print_r(func_get_args());
    }
    getSum(10,20,30);

                     应用:求n个数的和

<?php
/*
 * 函数
 */
    //求n个数的和
    function getSum(){
        $sum = 0;
        $count = func_num_args();//获取数组的长度
        $arguments = func_get_args();//获取整个数组
        for($i=0;$i<$count;$i++){
            $sum+=$arguments[$i];//求和
        }
        return $sum;
    }
    echo getSum(10,20,30);

                        另一种传不定长度数组的方式

<?php
/*
 * 函数
 */
    //求n个数的和
    function getSum(...$args){
        $sum = 0;
        for($i=0;$i<count($args);$i++){
           $sum+=$args[$i];
       }
       echo $sum;
    }
    getSum(10,20,30);

                         说明:...$变量名                  用于将实参以数组的形式保存在这个变量中。

三、作用域

            在PHP中函数适用于封装莫伊功能的代码段,函数在对代码进行封装会有一些影响。

        1、全局作用域与全局变量

                    在函数外部定义的变量,其作用域就是全局作用域,变量就是全局变量

                    示例:在php中全局变量是不能在函数内部进行访问的,函数内部属于局部变量

<?php
/*
 * 作用域
 */
    $i = 10;//全局变量
    echo $i;
    function showInfo(){
        echo $i;
    }
    showInfo();

        2、局部作用域与局部变量

                    在函数内部定义的变量,其作用域就是局部作用域,变量就是局部变量

                    示例:

<?php
/*
 * 作用域
 */

    function showInfo(){
        $i = 10;//内部变量
        echo $i;
    }
    showInfo();
    echo $i;

                  注:默认php中有很“清晰”的作用域,外部只能访问外部,内部只能访问内部。

        3、global关键字

                     php中有很“清晰”的作用域。但又是确实需要内部访问外部变量,或外部访问内部变量的情况。

                     解决方式:

                                     ①、内部访问外部变量采用传参的方式

                                     ②、外部访问内部变量通过函数return传出内部变量的值,或通过引用传值方式传递出内部变量

                                     ③、$GLOBAL(超全局变量),可以实现内部访问外部

                                             所有定义的全局变量会自动保存在$GLOBAL中

<?php
/*
 * 作用域
 */

    $name = 'Jan';
    $age = 20;
    echo '<pre>';
    print_r($GLOBALS);

                                            示例:

<?php
/*
 * 作用域
 */
    $name = 'Jan';
    $age = 20;
    function showInfo(){
        echo $GLOBALS['name'],'<br />';
        echo $GLOBALS['age'],'<br />';
    }
    showInfo();

                                     ④global关键字

                                     语法:

                                              global $变量名

                                     说明:

                                              global一定实在函数内部使用的,其作用是在函数内部建立一个与函数外部同名的变量的引用

<?php
/*
 * 作用域
 */
    $i = 10;
    function showInfo(){
        global $i;
        echo $i,'<br />';
        $i+=10;
    }
    showInfo();
    echo $i,'<br />';

                                              如果外部没有这样的变量名,会在外部自动创建一个同名变量

<?php
/*
 * 作用域
 */

    function showInfo(){
        global $i;
        $i=10;
    }
    showInfo();
    echo $i,'<br />';

    echo '<pre>';
    print_r($GLOBALS);

        4、常量的作用域

                     常量没有作用域的限制,一个脚本中的常量,在任何位置都能访问

        5、预定义变量(超全局变量)

                     超全局变量也不受作用域的限制

四、变量的生命周期

        1、作用域与生命周期

                     作用域  表示的是一个变量的作用空间范围

                     生命周期  表示的是一个变量的作用时间范围

        2、全局变量的生命周期

                     全局变量的生命周期从脚本执行开始到脚本执行结束

        3、局部变量的生命周期 

                    局部变量的生命周期是从函数执行开始到函数执行结束

五、静态变量

        1、定义

                     在函数内部使用static声明的变量,就是静态变量

<?php
/*
 * 静态变量
 */

    function showInfo(){
        $i = 1;
        $i++;
        echo $i,'<br />';
    }
    showInfo();//2
    showInfo();//2
    showInfo();//2
    showInfo();//2
    echo '<br />';
    function show(){
        static $j = 1;
        $j++;
        echo $j,'<br />';
    }
    show();//2
    show();//3
    show();//4
    show();//5

        2、原理

                    静态变量在函数多次被调用时,只会被初始化一次,并且变量的值并不会随着函数执行结束而被销毁

                    在函数下一次调用时,仍然可以访问其值。

六、系统函数

        1、日期时间函数

                     ①、time()

                     说明:

                              用于获取当前时间的时间戳。单位是秒。时间戳就是从时间原点至现在的秒数

                              时间远点:计算机中规定从1970年1月1日0时0分0秒为时间原点。

                     ②、micortime()    返回时间戳的微秒数

                     示例:

<?php
/*
 * 静态变量
 */

    echo time(),'<br/>';//精确到秒级
    echo microtime(),'<br/>';//精确到毫秒级

                     ③、date()

                     语法:

                             date(format [,time])

                     说明:

                             用于格式化时间信息。

                             format  用于格式化时间的字符串  字符对应解析参考手册(http://php.net/manual/zh/function.date.php)

                             time表示所要格式化的时间戳,可省略,若省略表示对当前时间进行格式化

<?php
/*
 * 静态变量
 */

    echo date('Y-m-d H:i:s');

                     ④、mktime()

                      语法:

                               mktime(时,分,秒,月,日,年);

                      说明:

                              用于获取指定时间的时间戳;

<?php
/*
 * 静态变量
 */
    echo mktime(12,10,7,11,8,1988);
    //获得1998年11月8日12时10分7秒的时间戳

                      ⑤、strtotime()

                      语法:

                               strtotime(string $time [, int $now = time() ]);

                      说明:

                               将任何字符串的日期时间描述解析为时间戳

<?php
/*
 * 静态变量
 */
    echo date('Y-m-d H:i:s',time()),'<br />';
    echo date('Y-m-d H:i:s',strtotime('+ 3month')),'<br />'
    //strtotime('+ 3month')获得三个月后的时间戳

                       手册(http://php.net/manual/zh/function.strtotime.php);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值