【php】基础学习3

  本节主要是php中函数的学习:

  1 <html xmlns=http://www.w3.org/1999/xhtml>
  2     <head>
  3     <meta http-equiv=Content-Type content="text/html;charset=utf-8">
  4     </head>
  5     <body>
  6     <?php
  7         /*
  8         * PHP中的函数
  9         * 函数使用关键字function来定义
 10         * 通常由函数名称、参数、函数体和返回值四部分组成
 11         * ① 不允许函数重名
 12         * ② 不能以数字开头,只能包括字母、数字和下划线
 13         * ③ 函数名不区分大小写
 14         * ④ 可使用函数名直接调用,后跟需要传入的参数并用小括号括起来
 15              如果没有需要传入的参数,则只写小括号
 16         * ⑤ 在php脚本中,可以先调用函数而后定义函数,谁先谁后没有固定要求
 17         */
 18         function returnNum($num1,$num2){
 19             $sum=$num1+$num2;
 20             return $sum;
 21         }
 22         echo returnNum(3,5)."<br/>";
 23     
 24         /*
 25         * 工作中,有时还会将任意数量的参数传递给函数
 26         * php中func_num_args函数返回参数总数,func_ge_args函数返回参数的具体信息
 27         */
 28         function muti_parameters(){
 29             $all_parameters=func_get_args();
 30             foreach($all_parameters as $key=>$value){
 31                 echo "键:$key=>值:$value<br/>";
 32             }
 33             echo "函数体所含参数数量:".func_num_args()."<br/>";
 34             echo "执行完一次muti_parameters函数<br/>";
 35         }
 36         muti_parameters(1,2,3,'你好');
 37         muti_parameters();
 38         
 39         /*
 40         * 按值传递
 41         * php中出了对象类型外,其他类型的参数传递方式都是值传递
 42         */
 43         function example($num){
 44             return $num*$num;
 45         }
 46         echo example(5)."<br/>";
 47         
 48         /*
 49         * 按引用传递
 50         * ① 引用传递方式是在形参前加上"&"号
 51         * ② 按引用传递是将实参的内存地址传递到形参中,所以不能直接传递值进入函数
 52         */
 53         //1
 54         $num1=1;
 55         function in_value(&$temp){
 56             $temp+=4;
 57             echo '函数内部temp='.$temp;
 58         }
 59         in_value($num);
 60         echo "<br/>";
 61         echo '函数调用结束后实参$num='.$num."<br/>";
 62         //2
 63         $num=3;
 64         function in_value1(&$temp){
 65             $temp+=4;
 66             echo '函数内部temp='.$temp;
 67         }
 68         //in_value1(3);此时程序报错ERROR
 69         
 70         /*
 71         * 默认参数值
 72         * 在php中定义函数时,参数可带默认值,在不传入数据时有默认值的参数直接被赋值为默认值
 73         */
 74         function member($name,$sex='男'){
 75             echo "姓名:".$name.' 性别:'.$sex."<br/>";
 76         }
 77         member('Jim');
 78         member('Lily','女');
 79         
 80         /*
 81         * 局部变量
 82         * 静态变量:static
 83         * ① 全局变量也是外部变量,是在函数的外部定义的
 84              需要在函数中使用全局变量时,可以将其声明为global
 85         * ② 在全局范围内访问变量的第二个办法:使用php自定义的$GLOBALS数组
 86         * ③ global与$GLOBALS的区别:
 87              使用global的时候其实是在使用全局变量的一个引用
 88              而使用$GLOBALS时其实是在使用全局变量本身
 89         */
 90         //1 global
 91         $temp1=1;
 92         $temp2=2;
 93         function sum(){
 94             global $temp1,$temp2;//使用global关键字引用
 95             $temp2=$temp1+$temp2;
 96         }
 97         sum();
 98         echo '$temp2='.$temp2."<br/>";//$temp2=3
 99         //2 $GLOBALS数组
100         $temp1=1;
101         $temp2=2;
102         function sum2(){
103             $GLOBALS['temp2']=$GLOBALS['temp1']+$GLOBALS['temp2'];
104         }
105         sum();
106         echo 'temp2='.$temp2."<br/>";
107         //3 global与$GLOBALS的区别
108         $temp1=1;
109         $temp2=2;
110         function sum3(){
111             global $temp1;
112             unset($temp1);
113             unset($GLOBALS['temp2']);
114         }
115         sum3();
116         echo '$temp1='.$temp1.'<br/>'; //$temp1=1,函数中只是删除了一个引用,原变量还在
117         //echo $temp2;错误,因为此时temp2已经被释放掉了
118         
119         /*
120         * php支持在函数内部定义一个函数,或者根据程序的需要在函数内部处理后得到符合需求的函数
121         */
122         function outside_define($define){
123             if($define=='add'){
124                 function inside_define($num){
125                     $num +=$num;
126                     return $num;
127                 }
128             }else{
129                 function inside_define($num){
130                     $num *=$num;
131                     return $num;
132                 }
133             }
134         }
135         outside_define('add');
136         echo inside_define(6)."<br/>";
137         //outside_define('ss');第二次执行会报错,因为函数inside_define()已经定义了
138         
139         /*
140         * php可提供用变量存储函数名称的功能
141         * 当在变量后追加小括号时,php将自动解析变量的值是否为一个函数名,
142         * 如果是,则直接执行该函数
143         */
144         function low($num){
145             $num=$num-100;
146             echo $num;
147         }
148         function ride($num){
149             $num=$num*100;
150             echo $num."<br/>";
151         }
152         $fn="ride";
153         $fn(8);
154         
155         /*
156         * 递归函数
157         * 定义:在一个函数的内部,含有直接或间接调用自己本身的语句
158         * 建议使用循环替代递归
159           因为递归函数将在内存中创建几个自身的副本,而且将产生几次函数调用的开销
160         */
161         function factorial($num){
162             if($num==0){
163                 return 1;
164             }else{
165                 return $num * factorial($num-1);
166             }
167         }
168         echo factorial(4)."<br/>";
169         
170         /*
171         * 使用和包含文件:include()与require()
172         * include("demo.php");require('demo.php')
173         * 主要区别:
174         * ① 当找不到被包含的文件时,require将输出错误,而include输出警告
175           ② include和require支持相对路径和绝对路径,
176              如果没有指定明确路径,则在当前目录搜索,
177              然后查找php.ini文件include_path设置中列出的目录
178           ③ php不支持函数重载
179         * 一个文件要包含两个不同的文件,而这两个文件却又包含了同一个文件,
180           为了解决这个问题,php提供了include_once和require_once。
181           他们在第一次编译的时候会包含指定的文件并记住这个文件,当脚本第二次解析到这里的时候,
182           他们将会通知php该文件已被包含过。这样,就防止了函数或结构重复定义的问题
183         */
184         
185         /*
186         * php模块化
187         * 例如:
188         * header.php
189           <html>
190             <head>
191                 <title><?php echo $title;?></title>
192             <style>
193                 h1{color:red;}
194             </style>
195             </head>
196             <body>
197         * footer.php
198             <div align="center" width="200px">This is my footer</div>
199            </body>
200           </html>
201         * body.php
202           <?php 
203             $tile='include && require is my good friend';
204             require('header.php');
205           ?>
206             <h1><?php echo $title;?></h1>
207           <?php
208              require('footer.php');
209           ?>
210         */
211     ?>
212     </body>
213 </html>
原文地址:https://www.cnblogs.com/ningvsban/p/3619678.html