Blogger Information
Blog 39
fans 0
comment 0
visits 34106
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
函数的基本语法--2019/07/30
LISTEN的博客
Original
798 people have browsed it

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]);

运行实例 »

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

 

Correction status:qualified

Teacher's comments:你可能举个不同的案例呢, 上课是相加, 你改个相乘或除法也行呀, 不要原样照抄了...., 学到这么久了, 要有点自己的想法了
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post