php中怎么定义参数函数返回值,PHP函数的声明与调用及其类型、返回值、参数和命名空间...

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).”

“;//输出:50cad3acd223ced015f28691c45b26edd.png

//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{

echos1\demo1();

}

总结:开始把握了函数的根本用法和参数传递,对回调函数的运行机制还是很模糊;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值