1.函数的声明与调用
//函数是代码复用的重要手段,函数是通过调用来执行的,函数命名要有含义,函数名以数字或下划线开头(不能以数字开头):
function函数称号的标识符(参数列表){
函数体,由一条或多条句子组成,也可认为空
}
//示例:
//声明函数demo
functiondemo($arg){
echo”{$arg}”;
}
//调用函数
demo($arg=’helloworld’);//输出helloworld
2.函数的类型
自定义函数
体系函数
可变函数
匿名函数
示例:
//1.自定义函数
//在PHP7,一个新的功用,回来类型声明已被引进。回来类型声明指定一个函数回来值的类型
functiongetnum($arg,$arg1):float
{
return$arg+$arg1;
}
echo’输出:’.getnum(11.1,12).’
‘;
//2.体系函数,php内置的函数,能够直接运用
$pwd=’12345678′;
//内置的加密算法函数
echohash(‘md5′,$pwd).’
‘;
echosha1($pwd).’
‘;
//3.可变函数,是把函数名变为另一个变量的值
functionadd($arg,$arg1):float
{
return$arg+$arg1;
}
$func=’add’;
echo$func(2,4).’
‘;
//4.匿名函数,也叫闭包函数,允许暂时创建一个没有指定称号的函数。最经常用作回调函数(callback)参数的值
$demo=function($str){
printf(“Hello%s
“,$str);
};
$demo(‘World’);
//闭包能够从父效果域中承继变量。任何此类变量都应该用use言语结构传递进去
//当父效果域是大局时
$num=2;
$p=function($arg)use($num):float{
return$arg*$num;
};
echo’输出结果:’.$p(3.5).’
‘;
//父效果域是父函数
$data=[
[‘name’=>’jack’,’score’=>99],
[‘name’=>’Anastasia’,’score’=>40],
[‘name’=>’Abraham’,’score’=>80],
[‘name’=>’Alexander’,’score’=>59],
];
$f=function($data){
//在匿名函数后面加上”use(父效果域中的变量)”
$p=function($line)use($data):array{
foreach($dataas$item){
$str[]=[
‘name’=>$item[‘name’],’result’=>($item[‘score’]>$line)?’合格’:’不合格’
];
}
return$str;
};
return$p;
};
$s=$f($data)(60);
foreach($sas$item){
echo$item[‘name’].’:’.$item[‘result’].’
‘;
}
3.函数的回来值
示例:
php
//函数是必须有回来值的,默认回来值为null示例如下:
functiondemo(){}
var_dump(demo());
echo’
‘;
//函数只能回来单一的值,回来多值有以下几种方法
//1.通过字符串拼接
functiondemo1():string
{
$str1=’hello’;
$str2=’php’;
return$str1.$str2;
}
echodemo1().’
‘;
//2.通过数组的方法
functiondemo2():array
{
$name=’张三’;
$age=22;
return[‘name’=>$name,’age’=>$age];
}
var_dump(demo2()[‘name’]);
echo’
‘,(demo2()[‘age’]),’
‘;
//3.通过json目标字面量字符串的方法
functiondemo3():string
{
$str1=’hello’;
$str2=’world’;
returnjson_encode([‘str1’=>$str1,’str2’=>$str2]);
}
//输出json格式数据
echodemo3(),’
‘;
//将json数据解码
print_r(json_decode(demo3()));
echo’
‘;
//4.序列化的方法
functiondemo4():string
{
$name=’张三’;
$age=22;
returnserialize([‘name’=>$name,’age’=>$age]);
}
//序列化后的数据
echodemo4(),’
‘;
//反序列化:复原
print_r(unserialize(demo4()));
4.函数中的参数
//1.值参数
$num=999;
functiondemo($num):float
{
return$num;
}
//2.引用传参
$num1=666;
//在参数前增加取地址符&
functiondemo1(&$num1):float
{
//函数内部对参数的更新会实时映射到外部实践参数
return$num1*=2;
}
echo$num1,’
‘;//666
echodemo1($num1),’
‘;//1332
//3.默认参数
//没有传参时默认的参数的值
//有默认值的参数,必须写到没有默认值参数的后面
functiondemo2($num3,$num4,$n=3)
{
return$num3*$num4*$n;
}
//没有传参数$n,此时会运用$n的默认值3
echodemo2(1,10).”
“;//输出:30
echodemo2(1,10,0.5).”
“;//输出:5

PHP函数的声明与调用及其类型、返回值、参数和命名空间

//4.剩下参数
//参数不固定的状况下运用…参数名来表明,将所有参数整合到数组中.
//剩下参数用在函数的参数列表中:搜集
//剩下参数用在函数的调用表达式中,是打开
functiondemo3(…$args)
{
//求传入参数的和
returnarray_sum($args);
}
echodemo3(1,2,3).”
“;//输出6
//调用参数的数量不固定的状况
$arr=[1,2,3];
$res=demo3(…$arr);
print_r($res);
//5.回调函数
//定义一个数组
$data=range(1,100);
//将数组中的每个值传到匿名函数中处理后回来处理以后的新数组
$arr=array_map(function($item){
if($item%2===0)return$item;
},$data);
//过滤掉空值
$res=array_filter($arr);
//数组重排array_values()
var_dump(array_values($res));
5.函数的命名空间
namespaces1{
functiondemo1(){
return”这是space1″;
}
}
namespaces2{
functiondemo1(){
return”这是space2″;
}
}
namespace{
echos1demo1();
}
总结:开始把握了函数的根本用法和参数传递,对回调函数的运行机制还是很模糊;

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。