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