博客列表 >7.30函数

7.30函数

55555的博客
55555的博客原创
2019年08月04日 17:58:55835浏览

1. 实例演示默认参数;

2. 实例演示剩余参数;

<?php

/*
 *   1、设置默认参数
 */
function sum($x = 12, $y = 23){
    return $x + $y;
}

//  默认值
echo sum();
echo "<hr/>";

//  一个参数
echo sum(5);
echo "<hr/>";

//  两个参数
echo sum(7, 9);
echo "<hr/>";


// ------------------------------------------------------------

/*
 *  2、设置第二个参数默认值
 */
function sum1($x, $y = 6){
    return $x + $y;
}

//  设置一个参数
echo sum1(5);
echo "<hr/>";

//  设置两个参数
echo sum1(4, 9);
echo "<hr/>";


// ------------------------------------------------------------
/*
 * array_sum() 函数换回数组中所以值的和
 * func_get_args() 获取一个函数的所有参数
 */
function sum3(){
    $num = func_num_args();
    echo "一共有:" . $num . "个参数<br>";
    return '所有值的和是:' . array_sum( func_get_args() );
}

echo sum3(1,3,5,7,9);
echo '<br>';

echo  sum3(12,25,98,45,36,4,9,50,66);
echo '<hr>';

// ------------------------------------------------------------
/*
 * 剩余参数:可变长参数
 */
function sum4($x, $y, ...$z){
    return $x + $y + array_sum($z);
}

echo sum4(3,6);
echo '<hr>';

echo sum4(3,6, 3,6,7,8,456,89);
echo '<hr>';


function sum5($x,...$y){
    return $x + array_sum($y);
}

echo sum5(56,56,23,78,9,5,6,2,45);
echo '<hr>';

echo sum5('a','b','cc','dd',4);
echo '<hr>';



function sum6(int $x, ...$y){
    return $x + array_sum($y);
}

echo sum6(2.4, 4, 6.2, 9, 10.8);

结果:

111.jpg


实例演示剩余参数;

// ------------------------------------------------------------
/*
 * array_sum() 函数换回数组中所以值的和
 * func_get_args() 获取一个函数的所有参数
 */
function sum3(){
    $num = func_num_args();
    echo "一共有:" . $num . "个参数<br>";
    return '所有值的和是:' . array_sum( func_get_args() );
}

echo sum3(1,3,5,7,9);
echo '<br>';

echo  sum3(12,25,98,45,36,4,9,50,66);
echo '<hr>';

// ------------------------------------------------------------
/*
 * 剩余参数:可变长参数
 */
function sum4($x, $y, ...$z){
    return $x + $y + array_sum($z);
}

echo sum4(3,6);
echo '<hr>';

echo sum4(3,6, 3,6,7,8,456,89);
echo '<hr>';


function sum5($x,...$y){
    return $x + array_sum($y);
}

echo sum5(56,56,23,78,9,5,6,2,45);
echo '<hr>';

echo sum5('a','b','cc','dd',4);
echo '<hr>';



function sum6(int $x, ...$y){
    return $x + array_sum($y);
}

echo sum6(2.4, 4, 6.2, 9, 10.8);


3. 实际演示匿名函数,并调用外部数据;

<?php
/*
 * 匿名函数(anonymous function),也叫闭包函数(closures)
 * 临时创建一个没有指定名称的函数,经常用作回调函数(callback)参数的值
 * 当然,也有其他应用的情况。匿名函数目前是通过Closure 类类实现的。
 */

//  匿名函数:函数表达式
$sum = function ($x, $y){
    return $x +$y;
};

echo $sum(2, 5.6);
echo '<hr>';


// ---------------------------------------------
//匿名函数作为函数的回调参数来使用
$arr = [2,4,5,7,8,42];

//  usort() 使用用户自定义的比较函数对数组进行排序
usort($arr,function ($x, $y){
//    return $x - $y; // 升序
    return $x + $y; // 降序
//    return $x <=> $y; //php7.0+以上可用
});

echo '<pre>' . print_r($arr,true);
echo '<hr>';


// ---------------------------------------------
$email = 'molang@php.cn';

//  “ & ”引用传递,就是将外部变量的地址传入,不是传入值
$ff = function () use (&$email){
  $email = 'admin@php.cn';
  return $email;
};

echo '1、' . $email;
echo '<hr>';
echo $ff();
echo '<hr>';
echo $email;
echo '<hr>';

function demo(){
    $name = 'molang';
    return function () use ($name){
        $name = 'peter';
        return $name;
    };
}

echo demo()();

            114.jpg



4. 实际演示call_user_func_array()的常用场景(忽略调用对象方法)

<?php

function sum($x, $y){
    return $x + $y;
}

//  传统方式
echo sum(3,8);
echo '<hr>';

//  回调方式来调用
echo call_user_func('sum',8,9);
echo '<hr>';

//  回调方式来调用
echo call_user_func_array('sum',[2,6]);
echo '<hr>';



print_r([1,2,3,4,5]);
//  可以用回调的方式来预定义函数/系统函数
echo call_user_func_array('print_r',[[1,2,3,4,5]]);
echo '<hr>';



class AA
{
    public function sum($x, $y){
        return $x + $y;
    }

    public static function mul($x, $y){
        return $x * $y;
    }
}


echo (new AA) -> sum(5,9);
echo '<hr>';

//可以将对象/类中的方法以回调的方式来执行
echo call_user_func_array([ (new AA),'sum' ], [23,56]);
echo '<hr>';

echo call_user_func_array( ['AA','mul'], [6,14]);

            115.jpg

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议