<?PHP
// 不同的脚本不能有同名函数,同名函数要放在不同命名空间
namespace spaceOne {
$money = 8000;
$pay = 1800;
// 定义的函数可在定义语句前面调用
echo payment($money, $pay);
// 参数加&为引用原变量,运算后值会变
function payment(&$money, $pay, $paymentWay = '支付宝')
{
$money = $money - $pay;
return "通过{$paymentWay}支付了{$pay}元,余额{$money}元。<br>";
}
$pay = 2800;
echo payment($money, $pay);
$pay = 850;
$paymentWay = '微信';
echo payment($money, $pay, $paymentWay);
}
namespace spaceTwo {
$state = true;
// say(); 函数还没执行定义,在此处调用会出错。
if ($state) {
function payment()
{
return '我们在学习PHP。';
}
}
echo payment();
}
<?PHP
// !函数返回值
function arr()
{
return [3, 6, 9];
}
[$a, $b, $c] = arr();
echo ($a + $b + $c);
// !接口开发 函数返回值会转为通用的json格式的数据返回,这样以来就可以和其他的编程语言进行数据交互,例如js与java php python
function login(): string
{
$loginMsg = ['status' => 1, 'msg' => '登录成功!'];
return json_encode($loginMsg, 320);
}
$lgoinMsg = login();
var_dump($lgoinMsg);
var_dump(json_decode($lgoinMsg));
<?PHP
/*
*特殊形式的函数
* 1.匿名函数(闭包函数)
* 2.回调函数
* 3.递归函数
*
*/
// 匿名函数(闭包函数)
$praise = function ($mascot) {
return "每个人都喜欢{$mascot}。<br>";
};
echo $praise('冰敦敦');
// 全局变量是指声明在函数外部的变量,在函数内部访问不到。
// 局部变量是指声明在函数内部的变量,只能在函数内部被访问到。
// 定义全局变量
$mascot1 = '冰敦敦';
$mascot2 = '雪融融';
// 定义函数
function praise()
{
// 下面语句是错误的,无法访问外部变量
// return "每个人都喜欢{$mascot}。<br>";
// 用global访问
global $mascot1;
// 用超全局数组$GLOBALS $_GET $_POST
return "每个人都喜欢{$mascot1}和{$GLOBALS['mascot2']}。<br>";
}
echo praise();
// 闭包用关键字use使用全局变量
$praise = function ($city) use ($mascot1, $mascot2) {
return "{$mascot1}和{$mascot2}是{$city}冬奥会的吉祥物。<br>";
};
echo $praise('北京');
// 通过引用传递,闭包可改变变量值
$praise = function ($mascot) use (&$mascot1) {
$mascot1 = $mascot;
};
$praise('熊猫');
echo $mascot1;
<?PHP
// 回调函数
// 定义匿名函数,把数组中的偶数筛选出来,组成一个新数组
$odd = function (array $arr) {
// 遍历数组
for ($i = 0; $i < count($arr); $i++) {
// 判断为偶数,组成新数组
if ($arr[$i] % 2 == 0) {
$newArr[] = $arr[$i];
}
}
return $newArr;
};
$arr = [2, 35, 22, 26, 27, 29, 28, 223, 226, 228, 225, 269, 248, 239, 2310, 2564, 2351, 2258];
// 定义函数,求数组中偶数的各
// 函数第1个参数为函数,第2个参数为数组
function sum(Closure $f, array $arr)
{
return array_sum($f($arr));
}
echo sum($odd, $arr) . '<br>';
// 使用call_user_func()把第一个参数作为回调函数调用,后面是参数
echo 'call_user_func函数' . call_user_func('sum', $odd, $arr) . '<br>';
// 调用匿名函数
var_dump(call_user_func($odd, $arr));
相关推荐
© 2020 asciim码
人生就是一场修行