<?php
// 自定义函数
$number = 5;
$name = ['zhao' , 'qian' , 'shun' ,' li' ,' chen' , 'wamg' ,'zhang'];
function unit(int $number): string
{
// global连接全局变量
global $name;
$number = $name[$number-1];
return $number;
}
// 调用函数
echo unit(2);
echo '<hr>';
// 系统函数
// 系统函数是已经定义好的函数,可以直接调用
// 把二进制转换为16进制的函数
echo bin2hex('chen') . '<hr>';
// 获得当前工作目录
echo getcwd();
echo '<hr>';
// 可变函数,使用变量名作为函数名
// 当变量的后面有圆括号时,系统自动搜索是否有同名的函数并尝试调用它
// 可以在实现回调函数,函数表应用
$a = 'unit';
echo $a(1);
echo '<hr>';
// 匿名函数:也叫闭包
// 可以作为变量的值来使用
// 'use':继承父级作用域中的变量。和命名函数中的'global'一样使用
$name = ['zhao' , 'qian' , 'shun' ,' li' ,' chen' , 'wamg' ,'zhang'];
$a = function ($number) use ($name): string
{
return $number = $name[$number-1];
};
// 直接用变量加参数调用
echo $a(5);
echo '<hr>';
// 返回值 多个值的返回方式
// 字符串拼装
function unit1(): string
{
$number = 1;
$name = 'xiaoming';
return $number. '号是' . $name;
}
echo unit1();
echo '<hr>';
// 通过数组返回
function unit2(): array
{
$number = 1;
$name = 'xiaoming';
$gender = 'man';
return [$number , $name , $gender];
}
print_r(unit2());
echo '<hr>';
// JSON:json_encode()
function unit3(): string
{
$number = 1;
$name = 'xiaoming';
$gender = 'man';
// 也可以返回字符串:return json_encode($number);
return json_encode([$number , $name , $gender]);
}
echo unit3();
echo '<hr>';
// 序列化:serialize()
function unit4(): string
{
$number = 1;
$name = 'xiaoming';
$gender = 'man';
// 也可以返回字符串:return serialize($number);
return serialize([$number , $name , $gender]);
}
echo unit4();
// 返回的都是字符串,只是显示的格式不一样,'JSON'和序列化需要解码
echo '<hr>';
// 参数
// 值传递:默认
// 只调用它的值在函数内部进行计算,不改变原始值。
$work = 'php';
function g($work){
return $work = $work . '中文网';
}
$l = g($work);
// 输出:php中文网
echo $l;
echo '<hr>';
// 输出:php
echo $work;
echo '<hr>';
// 引用传递
// 添加取地址符&,在改变函数内部的值时,所引用的原始值也一起被改变
$work = 'php';
function g1(&$work){
return $work =$work . '中文网';
}
$l = g1($work);
// 输出:php中文网
echo $l;
echo '<hr>';
// 输出:php
echo $work;
echo '<hr>';
// 默认参数
// 必须写在参数的最后面
// 默认值必须是常量表达式,不能是诸如变量,类成员,或者函数调用等
function g2($c , $work = '中文网'){
return $c . $work;
}
echo g('php');
echo '<hr>';
// 剩余参数
// '...'参数归纳
// 用在函数的形式参数列表中,表示"收集",将多个离散的参数打包到一个数组中处理
function are(...$por):array
{
return $por;
}
print_r( are(1,2,3,4,5,6,7,8,9));
echo '<hr>';
// 用在函数的调用参数列表中,表示"展开",还原将一个数组展开成一个个离散的值
$gpr = [1,2,3,4,5,6,7,8,9];
function are2(...$gpr):array
{
return $gpr;
}
print_r(are2(...$gpr));
总结
- 函数是可以在程序中重复使用的语句块
今天主要学习函数的组成
函数名称:命名的和匿名的,系统的和自定义的,可变的和不变的,以及
global
heuse
的用法函数的返回值:返回的都是字符串,只是显示的格式不一样,’JSON’和序列化需要解码
函数传递参数的四种方式,分别是值传递、引用传递(&)、默认参数和剩余参数(…)。