首页 > 代码库 > PHP笔记4__函数/全局、静态变量/函数参数/加载函数库/,,

PHP笔记4__函数/全局、静态变量/函数参数/加载函数库/,,

<?php    header("Content-type: text/html; charset=utf-8");    echo table(5,5);    function table($rows,$cols){ //函数        $str = ‘‘;        $str .= ‘<table border="1" width="800" align="center">‘;        $str .= ‘<caption><h1>表格</h1></caption>‘;                for($i=0;$i<$rows;$i++){            $bg=($i%2==0)?"#cccccc":"";            $str .= ‘<tr bgcolor="‘.$bg.‘">‘;            for($j=0;$j<$cols;$j++){                $str .= ‘<td>‘.($i*$cols+$j).‘</td>‘;            }            $str .= ‘</tr>‘;        }        $str .= ‘</table>‘;        return $str;    }        echo table(10,10);    if(function_exists("table")){ //判断函数是否存在的函数        echo "existed!<br>";    }else{        echo "not existed!<br>";    }?>

 

<?php    header("Content-type: text/html; charset=utf-8");    $name = "I";    define("cha1","i love u.");    function demo(){        echo cha1.‘<br>‘; //常量/系统自带的一些变量($_POST,$_GET)可以不用global声明        $name = "She";        echo $name.‘<br>‘;        global $name; //声明接下来使用全局变量$name        echo $name.‘<br>‘;        $name = "U";        echo $name.‘<br>‘;    }    echo $name.‘<br>‘;    demo();    echo $name.‘<br>‘;    /**    静态变量(用处:统计函数被调用的次数~)    1.在函数中声明的静态变量,只在第一次调用时声明,    2.第二次以后,一看是静态变量,就到静态区中看一下有没有这个变量,如果有就使用,而不去再声明    3.静态变量在同一个函数多次调用中共享,在不同函数中不共享。(不仅存储了静态变量名,还存储了是属于哪个函数)    */    function demo1(){        static $c = 0;        $c++;        echo $c.‘<br>‘;    }    function test(){        static $c = 0;        $c++;        echo $c.‘<br>‘;    }    demo1();    demo1();    test();    test();    test();    demo1();    //上面输出:1,2,1,2,3,3?>

 

<?php    header("Content-type: text/html; charset=utf-8");        $b = 20;    function demo(&$a){ //引用        $a =100;    }    echo $b.‘<br>‘;    demo($b); //只能传变量,不能传数字    echo $b.‘<br>‘;    function demo1($a=123,$b="hello"){ //默认参数        echo $a.‘ ‘.$b.‘<br>‘;    }    demo1(); //输出:123 hello    demo1(321,"keke"); //输出:321 keke    /**    可变参数(如果函数参数太多,用这种方法好)    */    function demo2(){        /*         func_get_args() //返回一个数组,包含所有参数         func_num_args() //返回参数总数        */        $arr=func_get_args();        var_dump($arr);        echo ‘##########<br>‘;        $sum = 0;        for($i=0;$i<count($arr);++$i){            $sum+=$arr[$i];        }        echo $sum.‘<br>‘;    }    demo2(1,2,3,4,5);    /**    变量函数    */    function add($a,$b){        return $a+$b;    }    function sub($a,$b){        return $a-$b;    }    $var = ‘add‘;    echo $var(2.2,3.1).‘<br>‘;    $var = ‘sub‘;    echo $var(2.2,3.1).‘<br>‘;?>    

 

<?php    header("Content-type: text/html; charset=utf-8");    /**    在使用一个函数的时候,如果传一个变量不能解决多大的问题,就需要将一个过程传入函数中,改变函数的执行行为。    回调函数:在函数的调用时,在参数中传的不是一个变量或一个值,而是一个函数,这就是回调函数参数    */    function cmp1($a,$b){        if($a==$b) return 0;        if($a>$b)            return 1;        else            return -1;    }    $arr = array(1,5,8,9,-1,-5,-99);    print_r($arr);    sort($arr);    echo ‘<br>‘;    print_r($arr);    echo ‘<br>‘;    usort($arr,"cmp1"); //从小到大排序    print_r($arr);    echo ‘<br>‘;    /**    制作回调函数    */    function demo($num,$n){        for($i=0;$i<$num;++$i){            if($n($i)) continue;            echo $i.‘<br>‘;        }    }    function test($i){        if(preg_match(‘/3/‘,$i))            return true;        else             return false;    }    function test1($i){        if($i==strrev($i))            return false;        else             return true;    }    demo(100,‘test‘);    demo(100,‘test1‘);?>    

 

<?php    header("Content-type: text/html; charset=utf-8");    /**    加载自定义函数库(*:加载并执行)    include_once() //失败时产生警告    require_once() //失败时产生致使错误    */    include_once(‘test123.php‘);    include_once(‘test123.php‘);    include_once(‘test123.php‘);    include_once(‘test123.php‘);    include(‘test124.txt‘);    include(‘test124.txt‘);    include(‘test124.txt‘);    include(‘test124.txt‘);    hello();    /**    匿名函数,也叫闭包函数(只在PHP5.3.0以上版本有效)    */    $var = function(){        echo ‘kekekek...‘.‘<br>‘;    }; //一定要以;结束     $var();    var_dump($var); //对象类型    /**    闭包函数:通俗地说,子函数可以使用父函数中的局部变量,这种行为叫做闭包    【建议:PHP闭包的特性并没有太大的惊喜,其实用CLASS就可以实现类似甚至更强大的功能,不过匿名函数还是挺有用的            目前还不稳定,不适合正式开发】    【闭包函数返回时,该函数内部变量处于激活状态,函数所在栈区仍然保留】    1.闭包外层是个函数    2.闭包内部都有函数    3.闭包会return内部函数    4.闭包返回的函数内部不能有return(因为这样就真的结束了)    5.执行闭包后,闭包内部变量会存在,而闭包内部函数的内部变量不会存在。    闭包的应用场景:    1.保护函数内的变量安全,    2.在内存中维持一个变量。    */    function one(){ //一个简单闭包函数        $a = 10;        $b = 12;        $var = function() use ($a,&$b){            echo ‘111111111<br>‘;            echo $a.‘<br>‘;            echo $b.‘<br>‘;            $a++;            $b++;        };        $var();        echo ‘------‘.$a.‘--------<br>‘;        echo ‘------‘.$b.‘--------<br>‘;        return $var;    }    $lol = one();    $lol();    $lol(); //一个闭包就是当一个函数返回时,一个没有释放资源的栈区?>    

 

PHP笔记4__函数/全局、静态变量/函数参数/加载函数库/,,