1 <?PHP 2 3 //函数 4 //用户自定义函数 5 // 函数名和 PHP 中的其它标识符命名规则相同。有效的函数名以字母或下划线打头,后面跟字母,数字或下划线。 6 7 // PHP 不支持函数重载,也不可能取消定义或者重定义已声明的函数。 8 // 函数名是大小写无关的,推荐与定义时相同。 9 function add($a,$b) 10 { 11 return $a + $b; 12 } 13 14 15 echo adD(2,3); //5 16 17 18 function func1() 19 { 20 function func2() 21 { 22 echo "hello world"; 23 } 24 } 25 26 // func2(); // 不可调用,因为还未定义; 27 func1(); //调用func1后,func2被定义了,下面就可以调用了; 28 echo "<br>"; 29 func2(); //hello world 30 31 echo "<br>===============================================<br>"; 32 //函数的参数 33 //形参:其实就是只能在函数内部使用的变量; 34 //实参:其实就是赋值给形参变量的数据。 35 36 //函数参数的传值:实参变量通过什么方式传给形参变量 37 //函数参数通过值传递(即使在函数内部改变参数的值,它并不会改变函数外部的值)。 38 function func3($a) 39 { 40 $a++; 41 echo $a; 42 } 43 $n=1; 44 func3($n); // 2 45 echo $n; //1 46 echo "<br>===============================================<br>"; 47 //通过引用传递参数。允许改变函数外的实参变量的值; 48 //注意:引用传递的只能是变量,不能是常量。 49 function func4(&$a) 50 { 51 $a++; 52 echo $a; 53 } 54 $n=1; 55 func4($n); // 2 56 // func4(1); error 57 echo $n; //2 58 59 echo "<br>===============================================<br>"; 60 // 默认参数的值 61 // 注意:当使用默认参数时,任何默认参数必须放在任何非默认参数的右侧 62 function makecoffee($people,$type = "拿铁") 63 { 64 echo "<br>喂,{$people},给我来一杯$type 。"; 65 } 66 67 makecoffee("刘亦菲"); 68 makecoffee("刘亦菲",null); 69 makecoffee("刘亦菲","卡布奇诺"); 70 71 72 echo "<br>===============================================<br>"; 73 //返回值 74 //return可以返回包括数组和对象的任意类型。返回语句会立即中止函数的运行,并且将控制权交回调用该函数的代码行。 75 //函数不能返回多个值,但可以通过返回一个数组来得到类似的效果。 76 function small_numbers() 77 { 78 return array (0, 1, 2); 79 } 80 $array = small_numbers(); 81 var_dump ($array); //array(3) { [0]=> int(0) [1]=> int(1) [2]=> int(2) } 82 83 function add1($a,$b) 84 { 85 return $a + $b; 86 } 87 //返回的值可以被随意调用 88 var_dump (add(3,"4")*5 +6); // int(41) 89 // 函数没有返回值则var_dump()的结果为NULL 90 var_dump(var_dump (add(3,"4")*5 +6)); // NULL 91 92 //只有一个return则只结束函数不返回任何值; 93 function func5() 94 { 95 echo "只输出这一行"; 96 return ; 97 echo "这里不输出"; 98 99 } 100 func5(); 101 102 //可变函数 103 104 // 所谓可变函数,其实就是函数名是另一个变量的值。 105 // 这意味着如果一个变量名后有圆括号,PHP 将寻找与变量的值同名的函数,并且尝试执行它。 106 // 类比于可变变量:$$a; 107 function f1($a) 108 { 109 echo $a; 110 } 111 $b="f1"; 112 $b("hahahaa"); 113 114 echo "<br>===============================================<br>"; 115 //扩展: 116 // strrchr(haystack, needle)这个函数的两个参数名的意思是:haystack干草堆,needle缝衣针,比喻在干草堆里找缝衣针,大海捞针。 117 // 查找指定字符在字符串中的最后一次出现位置,并返回它(包括自己)之后的字符。 118 $a="liuyifei.gif"; 119 echo strrchr($a, "."); // .gif 120 //substr(string, start) 取出字符串中指定位置之后的N个字符 121 $a='abcdefgh'; 122 echo substr($a, 2,2); //cd 123 echo substr($a, 2); //cdefgh ,默认取所有 124 echo substr($a, 2,100); //cdefgh 125 //可变函数的应用实例: 126 //根据用户上传的不同格式的图片做不同的处理; 127 128 function do_jpg($f) 129 { 130 echo "<br>在这里处理jpg格式的图片。"; 131 } 132 function do_png($f) 133 { 134 echo "<br>在这里处理png格式的图片。"; 135 } 136 function do_gif($f) 137 { 138 echo "<br>在这里处理gif格式的图片。"; 139 } 140 141 $file_name = $_GET['file_name']; // liuyifei.gif 142 $houzhui1 = strrchr($file_name,'.'); // .gif 143 $houzhui2 = substr($houzhui1,1); //gif 144 $function_name = "do_".$houzhui2; //do_gif 145 $function_name($file_name); 146 147 //匿名函数 148 echo "<br>===============================================<br>"; 149 150 $gbs = function ($n,$m) 151 { 152 for ($i=$n; ; $i+=$n) 153 { 154 if($i%$m==0) 155 { 156 echo "{$n}和{$m}的最小公倍数为".$i; 157 break; 158 } 159 } 160 161 /* $i=$n; 162 while ($i<=$i*$n) 163 { 164 if($i%$m==0) 165 { 166 echo "{$n}和{$m}的最小公倍数为".$i; 167 break; 168 } 169 else 170 { 171 $i+=$n; 172 } 173 }*/ 174 }; 175 176 $gbs(17,13); 177 echo "<br>===============================================<br>"; 178 179 //求最大公约数 180 //我的思路:两个数,假如,24、28,先都除以2看看,不能都除尽则除以3看看,一直往后除,如果除以2除尽了,得到12、14,则对这两个数再采取同样的方法,先除以2..最后得到6、7,这两个数再都除以2,发现除不尽,往上+1,加到第一个数字6都不行,此时就终止程序,得到数字6,再把当初传入的第一个数字24除以6,得到的结果4即为24和28的最大公约数!!! 181 function gys($n,$m) 182 { 183 function gys1($n,$m) 184 { 185 $i=2; 186 while (1) 187 { 188 if ($n%$i==0 && $m%$i==0) 189 { 190 return gys1(($n/$i),($m/$i)) ;// 12,14; 6,7 191 } 192 $i+=1; 193 if($i>$n) 194 { 195 return $n; 196 } 197 } 198 } 199 $a = gys1($n,$m); 200 echo "<br>{$n}和{$m}的最大公约数为:".($n / $a); 201 } 202 203 gys(24,28); 204 205 206 ?>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。