PHP学习笔记03——函数

  1 <!DOCTYPE unspecified PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2 <html>
  3     <?php
  4         //1. 简单函数示例,创建一个n*m的table
  5             /* PHP中的函数格式,其中可以没有返回值
  6              * function(参数1,参数2...) {
  7              *         函数体
  8              *         return 返回值;
  9              * }
 10              * 在函数定义之前和之后都可以调用函数
 11              */
 12         create_table("3*4的表格", 3, 4);
 13         
 14         function create_table($tablename, $rows, $cols) {
 15             echo "<table align='center' border='1' width='".($cols*100)."'/>";
 16                 echo "<caption><h1>{$tablename}</h1></caption>";
 17                 for ($i = 1; $i <= $rows; $i++) {
 18                     echo "<tr>";
 19                     for ($j = 1; $j <= $cols; $j++) {
 20                         echo "<td width='100'>".($i*$cols-$cols+$j)."</td>";
 21                     }
 22                     echo "</tr>";
 23                 } 
 24             
 25             echo "</table>"; 
 26         }
 27         
 28         create_table("5*6的表格", 5, 6);
 29     
 30         // 2. 局部变量、全局变量与静态变量
 31             /* 局部变量:函数内部声明,作用域仅限于函数内部
 32              * 全局变量:在函数中使用要用global加载全局变量,或者使用$GLOBALS数组
 33              * 静态变量:在局部变量前加static使改变量为所有对该函数的调用间共享
 34              * */    
 35         $a = 3;
 36         $b = 4;
 37         globalvar();
 38         globalvar();
 39         function globalvar(){
 40             static $c = 0;        //静态局部变量
 41             $c++;
 42             global $a;            //不加这一句直接输出$a会报错
 43             echo  $a;
 44             echo $GLOBALS['b'];    //使用全局数组访问$b
 45             echo $c;            //分别打印1,2
 46             echo "<br/>";
 47         }
 48         
 49         // 3. 按引用传值,在变量前加上&符将按引用传值,这种情况下只能传变量而不能传一个值
 50         $a = 20;
 51         yinyong($a);
 52         function yinyong(&$a){
 53             $a = 30;
 54         }
 55         echo $a."<br/>";
 56         
 57         // 4. 默认参数,和C++一样
 58         function outme($name, $age="20"){
 59             echo $name.",".$age."<br/>";
 60         }
 61         outme("张三");
 62         
 63         // 5. 可变个数参数,用func_get_argc()来得到参数列表
 64         function more_argc(){
 65             $args = func_get_args();
 66             for ($i = 0; $i < count($args); $i++)
 67                 echo "参数".($i+1).":".$args[$i]."<br/>";
 68         }
 69         more_argc("11","22","33");
 70         
 71         // 6.回调函数,使用函数作为参数
 72             /* 两种方法可以使用回调函数
 73              * 1.使用变量函数名
 74              * 2.使用call_user_func_array()来调用
 75              *     类静态函数和对象的方法回调有不同的地方,在下面实例说明
 76              */
 77             //下面使用字符串来调用函数,但这种方法不直观,并不常用
 78         function varfunc($func) {
 79             echo $func("varfunc_outstring");
 80         }
 81         function outstring($str) {
 82             echo $str."<br/>";
 83         }
 84         varfunc("outstring");
 85             //下面使用call_user_func_array()来回调
 86         call_user_func_array("outstring", array("varfunc_outstring"));
 87             //下面分别调用类静态函数和成员函数
 88         class Class_varfunc {
 89             static function fun1($str){
 90                 echo $str."<br/>"; 
 91             }
 92             function fun2($str){
 93                 echo $str."<br/>";
 94             }
 95         }
 96             //调用类静态函数,直接用类名加方法名即可
 97         call_user_func_array(array("Class_varfunc", "fun1"), array("varfunc_outstring"));
 98             //调用类非静态函数,要用对象的引用
 99         call_user_func_array(array(new Class_varfunc(), "fun2"), array("varfunc_outstring")); 
100     ?>
101     
102     
103     
104 
105 </html>

执行结果

原文地址:https://www.cnblogs.com/swm8023/p/3205841.html