<?php
/**
* 函数的返回值只能单个返回可以是字符串、整数、浮点型、数组、对象和布尔类型
* return后面的代码不会被执行
*
* 函数的参数:
* 多个参数可以用,隔开
* 参数为函数的调用者体供了一个接口去改变函数体的执行行为
* 没有参数。函数的执行行为是固定的
* 参数列表是从左往右传值的,形参设置有默认值的时候可以不填写参数,如果传了参数,会覆盖默认值
*/
$name = '林俊杰';
function demo($name)
{
//return返回的数据需要echo才能显示
return '我是'.$name;
}
echo demo('周杰伦<br>');
function demo1(int $a=1,int $b=2,int $c=3,int $d=4)
{
return $a+$b+$c+$d;
}
//参数列表是从左往右传值的,形参设置有默认值的时候可以不填写参数,如果传了参数,会覆盖默认值
//参数要么传,要么全都不传
echo demo1();
echo demo1(7,8,9,10);
echo '<hr>';
//function_exists()判断函数名是否存在
if(!function_exists('demo3'))
{
//剩余参数是...生成的 参数个数不确定
//剩余参数在列表中表示收集的作用
function demo3(...$arr)
{
return array_sum($arr);
}
echo demo3(123,456,789,125,666).'<br>';
$arr1 = [147,258,369,777,666,852];
//剩余参数用在函数调用表达式中:展开
echo demo3(...$arr1);
}
//匿名函数在PHP中是闭包函数
$demo4=function($name)
{
return "欢迎{$name}来到php<br>";
};
echo $demo4('胡歌');
/**
* 作用域:
* 全局成员不受作用域的影响
* 函数外变量如果想在函数内使用必须使用 global 变量名 或 $GLOBALS['变量名']
* 闭包函数如果要使用全局变量需使用 use(变量名)
*/
$phome='iPhone 12 Pro Max';
$RAM = '12G';
function demo5($phome,$RAM){
global $name;
return $name.'的手机型号'.$phome.'内存是'.$RAM.'<br>';
}
function demo6($phome,$RAM){
global $name;
return $GLOBALS['name'].'的手机型号'.$phome.'内存是'.$RAM.'<br>';
}
echo demo5($phome,$RAM);
echo demo6($phome,$RAM);
function demo7 ($s){
global $name;
return function ($t) use(&$name,$s)
{
if($name == '周杰伦') {
$name = '林俊杰';
return "{$t}最喜欢{$name}唱的{$s}<br>";
}else{
$name = '周杰伦';
return "{$t}最喜欢{$name}唱的{$s}<br>";
}
};
}
echo demo7('告白气球')('灭绝小师太');
echo $name;