Correcting teacher:天蓬老师
Correction status:qualified
Teacher's comments:学过js,这些都是小儿科了
//function 后边函数名称(类型限定 参数列表) : 返回值类型
function user(string $name) : string
//参数可以多个,用','隔开
function user(string $name, int $age): string
{
return $name . $age;
}
echo user('jack', 30);//输出jack 30
//user 为函数名
function user(string $name, int $age): string
//用函数名调用
echo user('jack',30);
//把函数赋值给变量$user
$user = function (): string
{
return 'jerry';
}
//用变量调用
echo $user();
function user(string $name): string
{
return $name ;
}
//调用的时候参数必须输入
echo user('jack');
function user(string $name,int $age = 18): string
{
return $name .$age;
}
//$age设定了默认值,调用的时候可以不输入,如果输入则替换默认值
echo user('jack');
//在不去定参数的情况下可以用...rest语法,把参数压到数组中
function user(string ...$arr): string
{
//数组求和
return array_sum($arr);
}
echo user(1, 2, 3, 4, 5);
$age = 30;
function man(int &$age): string
{
$age = 100;
return $age;
};
echo man($age), '<br>';
//因为$age被引用,函数内的$age值改变了全局的$age,输出$age = 100
echo $age;
$name = 'jack';
$age = 30;
function user(): string
{
//函数内部声明的变量外部不可见
$gender = '男';
//用关键字global来调用外部的变量
global $name;
//也可以用$GLOBALS直接调用
return $name . $GLOBALS['age'];
}
echo user();
$name = 'jack';
$age = 30;
//匿名函数需使用use 来引入参数
$user = function () use ($name, $age): string {
return $name . $age;
};
echo $user();
//用'&'引入传参
$user = function ($myname) use (&$name): string {
return $name = $myname;
};
//改变$myname的值为jerry
echo $user('jerry');
//$name的值也更新为jerry
echo $name;
function user($name)
{
return function ($color) use ($name): string {
return sprintf('<h3 style="color:%s">%s</h3>', $color, $name);
};
}
$closure = user('jerry');
echo $closure('red');
use禁止使用以下三种参数
超全局不让用,如 $_GET
$this
function user(string $name): string
{
return printf('我叫 %s', $name);
}
//采用回调异步执行
call_user_func_array('user', ['jack']);
function user(): array
{
return ['name' => 'jack', 'age' => '30'];
}
var_dump(user());
function man(): object
{
//创建一个匿名类返回
return new class()
{
public $name = 'jack';
public $age = 30;
};
}
//把函数赋给一个变量
$user = man();
//使用变量调用
var_dump($user);
//调用对象中的一个元素
echo $user->name;
function user(): string
{
return serialize(['name' => 'jack', 'age' => '30']);
}
//将函数的返回值赋给变量$user
$user = user();
//输出$user
echo $user; //{"name":"jack","age":"30"}
//用json_decode把返回值赋给变量$res
$res = unserialize(user());
//输出
var_dump($res);
//array(2) { ["name"]=> string(4) "jack" ["age"]=> string(2) "30" }
function user(): string
{
return json_encode(['name' => 'jack', 'age' => '30'], JSON_UNESCAPED_UNICODE);
}
//将函数的返回值赋给变量$user
$user = user();
//输出$user
echo $user; //{"name":"jack","age":"30"}
//用json_decode把返回值赋给变量$res
$res = json_decode(user());
//调用对象中的元素
echo $res->name, $res->age;
//默认是对象方式返回,如果使用数组方式返回json_decode()传入第二个参数 : true
$res = json_decode(user(),true);
var_dump($res);
//输出:array(2) { ["name"]=> string(4) "jack" ["age"]=> string(2) "30" }
// 静态变量
function demo1()
{
// 函数中的静态变量不会随函数调用结束而消失
// 他会自动进入到下一次的函数调用中
// 可以实现在函数的多次调用过程中:共享数据 / 数据通信
static $i = 1;
echo $i,'<br>';
$i++;
}
// echo $i;
echo demo1();
echo demo1();
echo demo1();
echo demo1();
echo demo1();