31. 函数

1. 定义

function 函数名(参数1,参数2...)
{
    函数体;
}
函数名区分大小写。

2.函数嵌套

function  compute()
{
    echo "开始计算<br/>";
    function add($a,$b){
        return $a+$b;
    } 
}

compute(); //调用外部函数
$a = 1;
$b = 2;
echo "$a + $b = " . add($a,$b); //调用内部函数

函数compute()内部又定义了一个add()函数。值得注意的是,只有当compute()函数被调用,
add()函数才被定义。而且,无论函数是定义在
内部还是外部,它都具有全局作用域,都可以在全局范围内被调用。

这里写图片描述


3.传参方式

1.按值传递
  按值传递的参数只有在函数被调用时,才分配相关的内存。函数执行完后立即释放。
  按值传递数组参数也是如此。函数执行时,首先会将数组完整复制一份给临时变量,函数体
执行完,临时变量所占内存会被释放,临时变量被注销。
2.引用传递
    function test(&$name)
    {
        $name = '沫沫';
    }

    $girl = 'Mo';
    echo "<p>调用函数之前";
    echo "我叫$girl";

    test($girl);
    echo "<p>调用函数之后";
    echo "我叫$girl";

并没有将$girl的值赋给$name,而是将$girl的内存地址赋给了$name
对数组的按引用传递:
function test()
    {
        $people['name'] = '沫沫';
        $people['age'] = 20;
        $people['hobby'] = '读书';
    }

    $girl = array(
        'name'=>'',
        'age'=>'',
        'hobby'=>''
    );

    echo "<p>调用之前:";
    print_r($girl);

    test($girl);
    echo "<p>调用之前:";
    print_r($girl);

对数组变量按引用传递,只是传递了数组首个元素的地址。

4. return 语句

含返回值的函数可以直接用在表达式中,但不可以被赋值,即不能为左值。

PHP 函数不能返回多值,同样的功能可以通过返回一个数组来实现。

1.返回引用变量
function &getName()
{
    $name = '默默';
    return $name; //返回引用变量
}
$name = &getName(); //将引用返回值赋给变量
echo $name;

定义时,必须在函数名称前面用引用操作符" & ",将该返回值赋给某个变量时,
函数名称前也必须用" & "标示符。

5. 可变函数

同样的函数名称,其函数体可以动态的变化。PHP允许将函数名称作为字符串赋给某个变量。
这就意味着,如果某个变量后面有一对圆括号,PHP引擎将寻找与该变量值同名的函数并执行。

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

    function sub($a,$b)
    {
        return $a-$b;
    }

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

    function div($a,$b)
    {
        if($b==0) return null;
        return $a/$b;
    }

    $a = 1;
    $b = 2;

    $compute = 'add';
    echo "$a + $b = " . $compute($a,$b) . "<br/>";

    $compute = 'sub';
    echo "$a - $b = " . $compute($a,$b) . "<br/>";

    $compute = 'mul';
    echo "$a * $b = " . $compute($a,$b) . "<br/>";

    $compute = 'div';
    echo "$a / $b = " . $compute($a,$b) . "<br/>";

6. 匿名函数

临时创建,没有名称的函数。PHP 匿名函数是通过闭包(closures)实现的,常用于回调函数。

array_filter()函数,其作用是按照回调函数过滤数组元素。
function filter($var)
    {
        return $var>10;
    }

    $myarray = array(10,11,12,13,5,6,7);
    $newarray = array_filter($myarray,'filter');
    print_r($newarray);
使用匿名函数:
$myarray = array(10,11,12,13,5,6,7);
    $newarray = array_filter($myarray,function($var){return $var>10; });
    print_r($newarray);

7. PHP 默认参数
这里写图片描述
这里写图片描述

这里写图片描述
这里写图片描述
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值