博客列表 >函数的基本语法--2019/07/30

函数的基本语法--2019/07/30

LISTEN的博客
LISTEN的博客原创
2019年07月31日 14:45:09802浏览

1、函数的声明与调用

实例

<?php
// 函数的声明与调用
 function sum($a,$b){
     // 函数体: 由一条或多条语句组成
     // $c 声明在函数内, 叫私有变量, 局部变量
     $c=0;
     $c=$a+$b;
     return $c;
     echo $c;
 }
 echo sum(5,6);

 echo '<hr>';

function sum1($a,$b){
    // 函数体: 由一条或多条语句组成
    // $c 声明在函数内, 叫私有变量, 局部变量

    echo $a+$b;
}
sum1(3,2);

运行实例 »

点击 "运行实例" 按钮查看在线实例

2、函数的参数 、剩余参数

实例

<?php
// 函数的参数
function sum($a=10,$b=20){  //a、b为形参
    echo 'a='.$a." --- b=".$b.'<br>';
    return $a+$b;
}
echo sum();
echo'<br>';
echo sum(6);
echo'<br>';
echo sum(5,8);//这里的5、7是实参

echo '<hr>';

// 形参是占位符, 并不是必须的,但是推荐写上
function sum1(){
    // 查询当前函数传进来几个参数?
    return func_num_args();
}

echo sum1();//0
echo'<br>';
echo sum1(5,6,7);//3

echo '<hr>';

function sum2(){
    // 查看所有传入的参数的值,获取一个函数的所有参数
    return func_get_args();
}

print_r(sum2()) ;//Array ( )
echo'<br>';
print_r(sum2(5,6,7,8)) ;//Array ( [0] => 5 [1] => 6 [2] => 7 [3] => 8 )

echo '<hr>';
function sum3(){
    // 获取某一个参数的值
    echo func_get_args()[0];
    echo'<br>';
    // 获取某一个参数值的快捷方法
    echo func_get_arg(1);
    echo'<br>';

    //1、求和
    $s1=func_get_arg(0)+func_get_arg(1)+func_get_arg(2);
    echo 's1='.$s1.'<br>';

    //2、求和
    $s2=0;
    foreach (func_get_args()as $value){
        $s2+=$value;
    }
    echo 's2='.$s2.'<br>';

    //3、求和
    $s3=array_sum(func_get_args());
    echo 's3='.$s3.'<br>';
}
sum3(1,2,3,4,5);

echo '<hr>';

// 剩余参数: 可变长参数
function sum4($a,$b,...$c){
    echo 'a='.$a.',b='.$b.'<br>';
    print_r($c);
    echo '<br>';
    return $a+$b+array_sum($c);
}

echo sum4(1,2,3,4,5,6);

echo '<hr>';

//比较是否设置剩余参数的区别---- 开始

function sum5($a,$b){
    echo 'a='.$a.'<br>';
    print_r($b);
    echo '<br>';
    return $a+array_sum($b);
}
$arr=[1,2,3];
echo sum5(1,$arr);

echo '<hr>';

function sum6($a,...$b){
    echo 'a='.$a.'<br>';
    print_r($b);
    echo '<br>';
    return $a+array_sum($b[0]);
}
$arr=[1,2,3,4];
echo sum6(1,$arr);

echo '<hr>';

function sum7($a,...$b){
    echo 'a='.$a.'<br>';
    print_r($b);
    echo '<br>';
    return $a+array_sum($b);
}
$arr=[1,2,3,4,5];
echo sum7(1,...$arr);


//比较是否设置剩余参数的区别---- 结束

echo '<hr>';

function sum8(int $a,...$b){  //规定$a 为整数
    echo 'a='.$a.'<br>';
    print_r($b);
    echo '<br>';
    return $a+array_sum($b);
}
$arr=[1,2,3,4,5];
echo sum8(1.8,...$arr);

运行实例 »

点击 "运行实例" 按钮查看在线实例

3、函数的返回值

实例

<?php
// 函数的返回值

function sum1(){
    return 'sum1';
}

echo sum1();
echo '<hr>';

// 如果没有return , 返回 NULL
function sum2(){

}

var_dump(sum2());
echo "<br>";
echo is_null(sum2())?'返回null':'没有返回null';

echo '<hr>';

// 函数不允许返回多个值
//若想返回多个值,就返回数组或者对象
function sum3(){
    $id=1;
    $name='php';
    return ['id'=>$id,'name'=>$name];
}

print_r(sum3());

echo '<hr>';

// 可以限制函数的返回类型
function sum4($a,$b):int
{
    echo 'a='.$a.' , b='.$b.'<br>';
    return $a+$b;
}

echo sum4(1.2,1.6);

运行实例 »

点击 "运行实例" 按钮查看在线实例

4、函数中的变量访问、全局变量访问、常量访问

实例

<?php
// 函数中的变量访问

//全局变量
$name='php';
$age=20;

//常量
define('NATION','中国');
const SITE='PHP中文网';

function demo1(){
    // 在函数中不能直接访问全局变量,必须使用 global 才能访问
    global $name;
    echo  $name.'<br>';

    echo $GLOBALS['name'].$GLOBALS['age']."<br>";

    //在函数中可以直接访问常量
    echo NATION.'<br>';
    echo SITE.'<br>';

    $mobile = '15260125693';
    return $mobile;
}

echo demo1();
//print_r($GLOBALS);

运行实例 »

点击 "运行实例" 按钮查看在线实例

5、匿名函数、并调用外部数据;

实例

<?php
// 匿名函数(Anonymous functions),也叫闭包函数(closures)
// 允许 临时创建一个没有指定名称的函数。最经常用作回调函数(callback)参数的值。

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

echo $sum(1,2);

echo '<hr>';

// 匿名函数做为函数的回调参数来使用
$arr=[2,6,3,1,8,7];

//usort() 通过用户自定义的比较函数对数组进行排序。
usort($arr,function ($a,$b){
//    return $a <=> $b;   // 太空船, php7.0+
    return $a-$b;
});
echo '<pre>', print_r($arr, true);

echo '<hr>';

// 获取外部数据
$name='php';

$f1=function () use ($name){
    echo 'f1:name='.$name.'<br>';
    $name='改变后的name,f1';
    return $name;
};
echo $f1();
echo '<br>';
echo '全局:name='.$name.'<br>';
echo '<hr>';

$f2=function () use(&$name){
    echo 'f2:name='.$name.'<br>';
    $name='改变后的name,f2';
    return $name;
};
echo $f2();
echo '<br>';
echo '全局:name='.$name.'<br>';
echo '<hr>';

// 函数允许嵌套定义

function demo(){
    $age=25;
    return function () use($age){
        return $age;
    };
}

echo demo()();
echo '<hr>';
 $d=demo();
 echo $d();

运行实例 »

点击 "运行实例" 按钮查看在线实例

6、回调方式来调用函数、演示call_user_func_array()的常用场景

实例

<?php
// 函数的调用

function sum($a,$b){
    return $a+$b;
}

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

// 回调方式来调用函数
echo call_user_func('sum',3,6);
echo '<br>';
echo call_user_func_array('sum',[2,8]);

echo '<hr>';

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

echo '<hr>';

// 还可以将对象/类中的方法以回调的方式来执行

class A
{
    public function sum($a,$b){
        return $a+$b;
    }

    public static function mul($a,$b){
        return $a*$b;
    }
}

$obj=new A();
echo $obj->sum(2,3);
echo '<br>';
echo call_user_func_array([$obj,'sum'],[11,22]);
echo '<br>';
echo call_user_func_array([(new A),'sum'],[1,22]);
echo '<br>';
echo call_user_func_array(['A','mul'],[5,6]);

运行实例 »

点击 "运行实例" 按钮查看在线实例

 

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