PHP基础:函数基础知识
1.函数的4种类型:系统函数、自定义函数、可变函数、匿名函数
// 1.函数的4种类型
// 1.1 系统函数
echo '系统函数举例:<br>';
echo '1.系统日期函数</br>';
echo '今天是'.date('Y').'年'.date('m').'月'.date('d').'日<br>';
echo '2.获取字符串长度函数</br>';
echo '字符串:Hello Word的长度是'.strlen('Hello Word'),'<br>';
echo '3.字符串截取函数</br>';
echo '字符串:Hello Word截取前5个字符'.substr('Hello Word',0,5),'<br>';
echo '4.字符替换函数</br>';
echo '将字符串:Hello Word中的Word改为Everyone;'.str_replace('Word','Everyone','Hello Word'),'<br>';
echo '5.四舍五入函数';
echo '圆周率3.1415926四舍五入保留2位小数:'.round(3.1415926,2),'<br>';
// 1.2自定义函数
// 函数的命名规则同变量的命名规则
// getPrice: 小驼峰命名法 get_price: 蛇形命名法
echo '自定义函数举例:';
function user($username,$age){
return "姓名:".$username.",年龄:".$age;
}
echo user("张三",20);
echo '<hr>';
// 1.3可变函数
echo '可变函数举例:';
$funName = 'user';
echo $funName('BAOYU', 30),'<hr>';
// 1.4匿名函数
$discount = 0.6;
// $discount 的作用域是全局
$getAmount = function ($money, $num) use ($discount){
$amount = $money * $num;
return $amount >= 2000 ? $amount * $discount : $amount;
};
echo '实付金额: ' . $getAmount(100, 20);
echo '<hr>';
2.函数多值返回的4种形式:字符串拼装、数组、JSON字符串、序列化字符串
//2. 函数多值返回的4种形式
// 2.1 字符串拼装
function fun1(){
$start = 'Hello ';
$name = 'BAOYU';
return $start .$name.'!';
}
echo fun1();
echo '<hr>';
// 2.2 数组
function fun2(){
return ['start'=>'Hello ', 'name'=>'BAOYU'];
}
echo fun2()['start'].fun2()['name'].'!';
echo '<hr>';
// 2.3 JSON字符串
function fun3(){
$arr= ['start'=>'Hello ', 'name'=>'BAOYU'];
return json_encode($arr);
}
print_r(json_decode(fun3(), true));
echo '<hr>';
// 2.4 序列化: 字符串
function fun4(){
$arr= ['start'=>'Hello ', 'name'=>'BAOYU'];
return serialize($arr);
}
// 反序列化后才可以使用
$arr =unserialize(fun4());
var_dump($arr,true);
3.函数的4种参数:值参数、引用参数、默认参数、剩余参数
// 3.函数的4种参数
// 3.1 值参数
function fun5($num){
return $num *= 2;
}
$num=100;
echo '函数返回的值:',fun5($num) , '<br>';
echo '传参给函数的值:',$num, '<hr>';
// 在函数中改变了调用参数的值,但原始调用参数并没有发生变化
// 3.2 引用参数
function fun6(&$num){
return $num *= 2;
}
$num=100;
echo '函数返回的值:',fun6($num) , '<br>';
echo '传参给函数的值:',$num, '<hr>';
// 如果在参数前面使用了取地址符,则会改变原始调用参数的值
// 3.3 默认参数
// 默认参数必须写在必选参数的后面
function fun7($a, $b, $c = '默认参数' )
{
return '第1个参数是:'.$a.';第2个参数是:'.$b.';第3个是默认参数:'.$c;
}
echo '未传第3个参数时函数返回默认值:'.fun7('1','2'),'<br>';
echo '传了第3个参数时函数返回传参值:'.fun7('1','2','3'),'<hr>';
// 3.4 剩余参数:用...代表多个剩余参数
function fun8($a,...$n ){
$str='第1个必传参数是:'.$a.'<br>';
$str.='剩余的参数分别是:';
foreach($n as $na){
$str.=$na.',';
}
return $str;
}
// 调用参数
$arr = [1,2,3,4,5,6,9,22,67];
// ...:
// (1)用在函数的形式参数列表中,表示"收集",将多个离散的参数打包到一个数组中处理
// (2)用在函数的调用参数列表中,表示"展开",还原将一个数组展开成一个个离散的值
echo fun8(...$arr);
echo '<hr>';