PHP:函数的返回值和参数,实例回调函数,匿名函数的理解

2021/10/7 22:12:32

本文主要是介绍PHP:函数的返回值和参数,实例回调函数,匿名函数的理解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

PHP:函数的返回值和参数,实例回调函数,匿名函数的理解
一.PHP函数

/**
 * 函数:完成特定功能的代码块~
   函数:属于全局成员 全局可访问 
 * 
 *  function 函数名称([ 参数类型限定 参数列表]) :返回值类型限定
  * {

        * 函数体
        * return 返回值;

        * 1. 函数只能返回单个值,返回值的数据类型可以是任意类型
        * 2. 函数碰到return语句,立即结束程序执行,return后面的代码不会被执行

  *}
 */

①自定义函数

//自定义函数
function setSum(float $a , int $b) :int
{
        return $a + $b;
}

echo setSum(10,20);

②return返回值

大家可以看到函数体内有多个return 返回了多个数据,但是return返回值只能返回一个值,而且在函数体内只要输出了return函数脚本则不会继续执行下去,系统也是按照从上到下解析的,所以最后的出的结果是100/200=5

//return返回值

function setSum(float $a , int $b) :int
{       
        return $a / $b;
        return $a * $b;
        return $a + $b;
}

echo setSum(100,20).'<hr>';

③return数组多个值

在函数里面return 数组也是没有问题的,可以返回多个值,如果要获取数组里面的内容则要用数组key也就是键值去获取,如果不知道这是什么东西可以用print_r来打印数组

//数组返回

function setArr():array
{
    return ['张帅',"echo666",'857857'];
}

$arr = setArr();

print_r($arr);

④return对象多个值

在访问对象里面的nam值的时候可以用->来进行访问

//对象返回

function setOBJ() :object
{
    return new class(){
        public $name = 'admin';
        public $email = '1234@qq.com';

    };
}

// $obj = setOBJ();
// echo $obj->name;
var_dump(setOBJ());
echo '<hr>';

⑤return 返回json类型

中文不转为unicode-> json_encode JSON_UNESCAPED_UNICODE 256
图片不转为unicode->JSON_UNESCAPED_SLASHES 64 图片转义和文字转义相加等于320

json_decode 能将json格式还原成php能够处理的数据类型
传入第二个参数true 可以转为原始数组

//转为json格式字符串返回

function setJson() :string
{
    //json_encode JSON_UNESCAPED_UNICODE 256 中文不转为unicode 
    //JSON_UNESCAPED_SLASHES 64 图片转义和文字转义相加等于320
    return json_encode(['id'=>1 ,'mag'=> '验证成功'],320);
}

$json_arr = setJson();

echo $json_arr .'<hr>';

//json_decode 能将json格式还原成php能够处理的数据类型
//传入第二个参数true 可以转为原始数组
$res = json_decode($json_arr,true);

var_dump($res);

⑤return 序列化字符返回

serialize 序列化字符返回 ,如果要解析里面的内容则要转换为php能解析的数字类型,用unserialize转换

unserialize 转换为数组类型

//序列化字符返回

function setLize(){
    //serialize 序列化字符
    return serialize(['id' => 1 ,'name' => 'admin@qq.com' ,'password' => '132456']);
}

var_dump(setLize());
echo '<hr>';

//unserialize转换成php能解析的类型
print_r(unserialize(setLize()));

二.PHP函数参数的引用
函数参数的作用:

  • 1.没有参数时, 执行的任务是固定的
  • 2.有参数,可以根据用户传递过来的数据决定函数内的程序该如何执行,函数的参数列表是给用户调用函数的时候,提供的接口
    ①自定义函数生成表格,参数是固定的不方便用户传递属性
//自定义表格属性
function taBle(){
    $table = '<table border = "1" cellspacing = "0" >';

    //for循环 循环表格列和行
    for ($i=0; $i < 3; $i++) { 
        //外层循环控制表格的行
        $table .="<tr>";

        for ($j=0; $j < 3 ; $j++) { 
            //内层循环控制表格的列
            $table .="<td><input type='button' value='按钮' /></td>";
        }

        //外层循环控制表格的行
        $table .="</tr>";
    }

    echo $table;
}

②让函数内部的参数不固定,让用户传递参数遍历表格

在函数里面声明遍历行参,写好函数内部代码后,让用户填写函数的实参就能形成用户想要的表格样式

//让函数内部的参数不固定,让用户传递参数遍历表格
//函数行参有,$row 行 , $cols 列 ,$background 背景色,$content 文字内容
function taBle2(int $row , int $cols ,string $background = 'blue' ,string $content = "心"){
    $table = "<table border = '1' cellspacing = '0' bgColor='$background' >";
    for ($i=0; $i < $row ; $i++) { 
        //外层循环表格的行
       $table .="<tr>";

        //内层循环表格的列

        for ($j=0; $j < $cols ; $j++) { 
            $table .="<td>$content</td>";
        }

        $table .="</tr>";

    }

    $table.="</table>";

    return $table;
}

echo taBle2(5,3,"lightblue","张帅");

三.PHP匿名函数

  • 函数:属于全局成员 全局可访问
  • 匿名函数 Anonymous functions 闭包 closures
  • 允许 临时创建一个没有指定名称的函数

此时变量名称就是这个匿名函数,我们就可以给它传递参数

在php中匿名函数,就是闭包,闭包会引发php作用域问题,php局部作用域访问全局作用域中的变量用:global 和 超全局数组$GLOBALS,闭包可以通过use访问函数外部的自由变量/父作用域中的变量

闭包可以改变上下文中的值,但是需要用的引用传递&

在工作中闭包常用作函数的返回值,返回一个闭包匿名函数,访问外部匿名函数行参$content,第一次传参是给父节点函数,第二次传参是给子节点匿名函数

当然也可以一起传参:echo demo3(“php中文网”)(“red”);

代码块

<?php

/**
 * 函数:属于全局成员 全局可访问 
 * 匿名函数 Anonymous functions  闭包 closures 
 * 允许 临时创建一个没有指定名称的函数
 */

//匿名函数,没有函数名称的函数
$setName = function ($name){
    echo $name;
};
//此时变量名称就是这个匿名函数,可以给他传递参数
$setName("张帅");
echo "<hr>";


//在php中匿名函数,就是闭包,闭包会引发php作用域问题
//php局部作用域访问全局作用域中的变量用:global 和 超全局数组$GLOBALS
$name = "张起灵";
$email = "13456@qq.com";

//闭包可以通过use访问函数外部的自由变量/父作用域中的变量

$demo = function() use ($name,$email){
    return sprintf('name = %s <br> email = %s <br>',$name , $email);
};

echo $demo() . "<hr>";


//闭包可以改变上下文中的值,但是需要用的引用传递&
$name1 = "我是自由/全局变量";
echo $name1 ."<br>";

$demo2 = function ($content) use (&$name1){
    return $name1 = $content;
} ;

$demo2("我可以改变自由/全局变量");

echo $name1 ."<hr>";


//在工作中闭包常用作函数的返回值
function demo3 ($content){
    //返回一个闭包匿名函数,访问外部匿名函数行参$content
    return function ($color) use ($content){
        return sprintf("<h3 style='color:%s'>%s</h3>",$color,$content);
    };
};

//第一次传参是给,父亲节点函数
$demo4 = demo3('php中文网');
//第二次传参是给,子节点匿名函数
echo $demo4('green');
//一起传参
echo demo3("php中文网")("red");



这篇关于PHP:函数的返回值和参数,实例回调函数,匿名函数的理解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程