PHP学习记录之函数
Posted 天青色wy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP学习记录之函数相关的知识,希望对你有一定的参考价值。
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 ?>
以上是关于PHP学习记录之函数的主要内容,如果未能解决你的问题,请参考以下文章
php 一个自定义的try..catch包装器代码片段,用于执行模型函数,使其成为一个单行函数调用
我的Android进阶之旅NDK开发之在C++代码中使用Android Log打印日志,打印出C++的函数耗时以及代码片段耗时详情