PHP中函数的声明和调用
语法: function 函数名(参数列表){函数体}
<?php
//声明函数
function sum($a,$b){
$c=$a+$b;
// $c 是函数自已的私有变量, 也叫局部变量,对外不可见
echo $c;
}
//函数调用
sum(5,8);
// 函数内的私有变量,外部不可访问
echo $c;
echo '<hr>';
函数参数:
函数参数可以在声明的时候给形参赋值,也可以调用的时候给实参赋值。
// 函数的参数
// 默认参数
function sum($a = 20, $b = 30)
{
$c = $a + $b;
return $c;
}
// 全部赋值,使用自定义的值
echo sum(10, 15), '<br>';
// 只给$a赋值,$b取默认值
echo sum(10), '<br>';
// 全部取默认值
echo sum(), '<br>';
echo '<hr>';
func_num_args(); 获取实参的数量
func_get_args(); 获取实参组成的数组
func_get_arg(); 获取每一个实参(比如:func_get_arg(0); // 第一个实参,func_get_arg(1); // 第二个实参)
array_sum(array) 获取数组之和
计算实参之和
function sum1()
{
//计算实参之和
// 方法一:
$total=0;
foreach (func_get_args() as $value){
$total+=$value;
}
return $total;
// 方法二:
return array_sum(func_get_args());
}
echo sum1(10, 20, 30, 40, 50);
echo '<hr>';
变长参数
(php7, 提供了一种可变长参数,代替了替代func_get_args()函数)
function sum2(...$params)
{
print_r($params);
// 实现累加操作
return array_sum($params);
}
echo sum2(1,2,3,4,5);
函数的返回值
return 返回值
如果没有return , 默认返回 null
function demo2(){ }
// 检测返回值的类型
echo is_null(demo2()) ? '返回NULL' : '没有返回NULL';
函数不允许返回多个值
如果需要返回多个值, 可以将值放在数组中返回
function demo4()
{
$a = 10;
$b = 20;
// return $a, $b; //这样是错的
// 可以将结果放在数组中返回
return [$a, $b];
}
echo '<pre>' . print_r(demo4(),true);
php7中, 可以限定函数的返回类型
function demo5($a, $b) :int
{
return $a + $b;
}
// 不限定返回类型,输出: 4.7, 限定后返回: 4
echo demo5(1.4, 3.3);
函数中的变量访问
函数中不能直接访问外部变量
有两种方法可以访问外部变量,关键字global声明和全局变量数组$GLOBALS[ ]。
$site = 'www.php.cn';
function demo1()
{
// 函数中不能直接访问外部变量
// return $site;//这样是错的
//方法一: 在函数中使用global关键字声明一下$site是一个全局变量
// 这样, 函数中就可识别出这个$site变量
// global $site;
// return $site;
//方法二:使用全局变量数组$GLOBALS[ ];
// 超全局变量不受作用域限制,可以在脚本的任何地方使用,当然也包括函数内
return $GLOBALS['site'];
}
echo demo1();
echo '<hr>';
常量也不受作用域的限制,可以在脚本的任何地方直接使用
define('SITE_NAME', 'PHP中文网');
function demo2()
{
return SITE_NAME;
}
echo demo2();
echo '<hr>';
外部如何访问函数的私有变量
function demo3()
{
$email = 'admin@php.cn';
// 通过return 返回私有变量到外部调用者
return $email;
}
$email=demo3();
echo $email;