• 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>

    执行结果

  • 相关阅读:
    Redis 存储字符串和对象
    深入理解Java中的final关键字
    Redis缓存Object,List对象
    JVM最多能创建多少个线程: unable to create new native thread
    Java中如何使用Redis做缓存
    Fiddler抓包11-HTTPS证书Actions无法导出问题
    Fiddler抓包10-会话框添加查看get与post请求类型
    python接口自动化10-token登录
    python接口自动化9-https请求(SSL)
    python爬虫beautifulsoup4系列4-子节点
  • 原文地址:https://www.cnblogs.com/swm8023/p/3205841.html
Copyright © 2020-2023  润新知