一、函数定义
函数是对于一段具有特定功能代码的封装,可以重复使用。
二、自定义函数
1、函数定义
格式:
function functionName(……){
函数体;
return 返回值
}
function func(
a
,
a,
a,b)
{
if (
a
=
=
a==
a==b)
echo “a=b”;
else if(
a
>
a>
a>b)
echo “a>b”;
else
echo “a<b”;
}
func(30,20);
2、函数调用
function my_sort(KaTeX parse error: Expected '}', got 'EOF' at end of input: …ray) { for(i=0;
i
<
c
o
u
n
t
(
i<count(
i<count(array);KaTeX parse error: Expected '}', got 'EOF' at end of input: …{ for (j=
i
+
1
;
i+1;
i+1;j<count(
a
r
r
a
y
)
;
array);
array);j++)
{
if(
a
r
r
a
y
[
array[
array[i]>
a
r
r
a
y
[
array[
array[j])
{
t
m
p
=
tmp=
tmp=array[$j];
a
r
r
a
y
[
array[
array[j]=
a
r
r
a
y
[
array[
array[i];
a
r
r
a
y
[
array[
array[i]=$tmp;
}
}
}
return $array;
}
$arr=array(2,4,1,4,7,4);
s
o
r
t
a
r
r
=
m
y
s
o
r
t
(
sort_arr=my_sort(
sortarr=mysort(arr);
foreach($sort_arr as $num)
echo $num;
3、参数传递
//例子1
function fruit( & $fru)
{
$fru =“apple”;
}
p
e
a
r
=
"
p
e
a
r
"
;
f
r
u
i
t
(
pear="pear"; fruit(
pear="pear";fruit(pear);
echo $pear;
注意:在定义函数时给参数赋予默认值,参数的默认值必须是常量表达式,不能是变量、类成员或函数调用。
默认参数必须放在非默认参数的右侧;否则,函数将不会按照预期的情况执行。
//例子2
function makecoffee($type= “cappuccino”)
{
return “Making a cup of $type.
”;
}
echo makecoffee();
echo makecoffee(null);
echo makecoffee(“espresso”);
4、递归函数
//声明一个函数
function test($n){
echo KaTeX parse error: Expected 'EOF', got '&' at position 4: n."&̲nbsp"; if(n>0)
{
test($n-1);
}
else
{
echo “<--------->”;
}
echo $n.“ ”;
}
test(10);
5、变量函数
//案例1
function come()
{
echo “谁进门了?
”;
}
function go(KaTeX parse error: Expected '}', got 'EOF' at end of input: …") { echo "name 出门了
“;
}
function back(KaTeX parse error: Expected '}', got 'EOF' at end of input: …r) { echo "str 重新进门”;
}
//声明一个变量并赋值
$func=“come”;
//使用变量函数来调用函数come()
$func();
//重新给变量赋值
$func=“go”;
//使用变量函数调用函数go()
$func(“jsne”);
//重新给变量赋值
$func=“back”;
//使用变量函数来调用函数back()
$func(“cc”);
补充:function_exists()函数判断该变量函数是否存在
//案例2
a
c
t
i
o
n
=
"
s
h
o
w
s
t
r
"
;
f
u
n
c
t
i
o
n
s
h
o
w
s
t
r
(
)
e
c
h
o
"
显示字符串
"
;
i
f
(
f
u
n
c
t
i
o
n
e
x
i
s
t
s
(
action ="showstr"; function showstr() { echo "显示字符串"; } if (function_exists(
action="showstr";functionshowstr()echo"显示字符串";if(functionexists(action()));
$action();
三、PHP变量的作用域
1、局部变量
在函数内部声明的变量,该变量只是局部有效。
$my_var=“test”;
function my_function()
{
l
o
c
a
l
v
a
r
=
123
;
e
c
h
o
′
local_var=123; echo '
localvar=123;echo′local_var=‘.
l
o
c
a
l
v
a
r
.
"
<
b
r
>
"
;
/
/
报错
e
c
h
o
′
local_var."<br>"; // 报错 echo '
localvar."<br>";//报错echo′my_var =’. KaTeX parse error: Expected 'EOF', got '}' at position 17: …y_var ."<br>"; }̲ my_function();…local_var=‘.
l
o
c
a
l
v
a
r
.
"
<
b
r
>
"
;
e
c
h
o
′
local_var."<br>"; echo '
localvar."<br>";echo′my_var =’. $my_var .“
”;
2、全局变量
在函数外部定义的变量,拥有全局作用域global.
$x=1;
function test()
{
global $x;
$y=2;
echo
x
+
x+
x+y;
}
test();
3、静态变量(static)
//案例1
function test()
{
$x=0;
echo $x;
$x++;
}
test();
test();
test();
//案列2
function test()
{
static $x=0;
echo $x;
$x++;
}
test();
test();
test();