函数
完成指定任务的功能代码块
//自定义函数
定义
function 函数名( 参数1, 参数2...)
{
函数体(语句)
return 返回值
}
函数名( 参数1, 参数2...);
function roge($a)
{
for($i=1 , $j=1; $i<=$a; $i++)
{
if($i%7==0)
{
$j++;
echo "$i";
if($j%4==1)
{
}
echo "<hr>";
}
}
}
roge(80)
作用
给一段代码起一个名字, 以后写名字 , 代码就会执行. 即调用.
通过名字 , 可以多次调用.
特点
-
变量要先定义赋值才可以输出, 但函数的定义和调用不分先后顺序的 函数的定义代码, 会被提前放到内存.
-
函数定义了, 不调用就不执行.
-
函数名不区分大小写. 但推荐要一致.
变量作用域(范围)
由于函数的出现,导致变量的能见度(生命周期)不同. 共划分为:全局变量、局部变量、 静态变量:
1). 全局变量: 在函数外定义变量,
作用域 : 在整个php文件中都可以被使用的变量.
<?php
//变量的作用域:全局变量
$a=10;//定义一个变量a值为10
$b=20;
//定义一个函数
function fun()
{
global $a; //尝试使用外部的全局变量a
echo $a; //输出变量a的值10
echo $b; //输出变量b的值,结果没有(因为没有使用global)
$a=100;
}
fun(); //调用函数fun
echo $a; //100
2). 局部变量: 在函数中定义变量
作用域 : 只能在函数内部使用. 可以使用return 将值返回, 函数结束时, 会被自动销毁
<?php
//变量的作用域:局部变量
//定义一个函数
function fun()
{
$a=100; //函数内定义变量
echo $a; //将变量a的值返回
}
fun(); //调用函数fun
echo $a; //没有输出,在函数内定义的变量,在函数外是无法使用的
3). 静态变量: 在函数中使用 static 定义变量
作用域 : 只能在函数内部使用. 函数结束时, 不被销毁. 函数下一次执行时还可以使用.
<?php
function fun()
{
static $i=1; //在当前脚本中连续多次调用本函数,i依然有效,里面的静态声明(初始化)只会调用一次。
$i++;
echo $i."<br/>";
}
fun(); //2
fun(); //3
fun(); //4
// 实参比形参多,多出来的会被忽略
// 形参比实参多,会报错误
// 2)默认参数
//形参
//默认参数放最后
function func($x, $y, $z=5)
{
echo $x+$y+$z;
}
// 实参
func(2,3,4);
3). 引用方式传递(引用传值)
使用&符来实现引用传递,就是将参数直接给函数使用。(起别名)
假如函数内容发生改变,会使当前参数也发生改变。
让 实参 和 形参 建立引用关系
注意: 调用引用参数(实参)时,必须使用变量,不可以直接用值, 否则不能建立引用关系
function func($str)
{
$str = 4567;
echo $str
}
$sr = '1234';
func($sr);
echo $sr;
4). 可变长度参数列表
func_get_args() //以数组的方式返回所有的参数信息
func_get_arg($index) //获取指定参数位置(index:从0开始的整数)的信息
func_num_args() //获取参数的个数
<?php
//可变长度参数列表
function dosum()
{
//echo "参数的个数:".func_num_args()."<br/>";
//通过下标的方式获取一个值
//echo "某个参数的值:".func_get_arg(4)."<br/>";
$sum=0;
for($i=0;$i<func_num_args();$i++){
echo func_get_arg($i)." ";
$sum+=func_get_arg($i);
}
echo "<br/>";
echo "共计:".$sum;
}
dosum(10,20,50,60,300,100,20);
函数的返回值
1) return 后面可以是任何类型的值
2) 不写return, 或者只写return, 函数的返回值为 null
3) return 下面的语句不会被执行. 因为return 的意思是函数结束, 并且返回到调用这个函数的位置.
可以返回在意类型的值
return’哈哈哈哈
/如果画数内部没有 return认返回值是UL
/如果数内部只写了 return返回值还是ULL