S@Kura的PHP进阶之路(三)

本文详细介绍了PHP中的变量范围,包括局部变量、全局变量和静态变量的用法。局部变量仅在函数内部有效,而全局变量在整个脚本范围内都可访问。静态变量在函数结束时不被释放,保持其值。在函数参数传递方面,讲解了值传递和引用传递的区别,以及如何使用默认参数和可变长度参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

变量范围

局部变量

全局变量

静态变量

参数的传递


变量范围


        变量范围即它定义的上下文背景(也就是它的生效范围)。在javascript中,并没有变量范围这一概念,相似的可能是作用域。但是,由于javscript使用的是词法作用域,指变量声明时的位置;而php并不存在变量声明,变量在第一次赋值时相当于声明了变量。所以,二者并不相同。本文将详细介绍php中的变量范围。

局部变量


        局部变量是在函数内声明的变量,其作用域仅限于函数内部。函数的参数也是局部变量,区别在于,函数参数值来自被调用时传入的值。执行完毕后函数内部的动态变量都将被释放。

function test(){
$a=1;//局部变量$a,仅在这个函数内部有效
}
echo $a;

全局变量


        在函数外定义的变量称为全局变量,作用域范围在定义变量开始到本程序文件的末尾。

另外,在函数中无法直接调用全局变量,需要使用关键字global,也可以使用$GLOBALS来代替global。$GLOBALS 是一个超全局变量。

<?php

$a = 1; 
$b = 2; 
function Sum()
{undefined

global $a, $b; $b = $a + $b;

}

Sum(); 
echo $b;//输出的结果是3

静态变量


        静态变量仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不丢失。静态变量用static来声明的,未被static声明的默认是动态变量。其在函数执行完之后,内部的静态变量已然保存在内存中。仅在脚本执行期间,第一次调用该函数时被初始化。

<?php

function test()

{undefined

static $a = 0; echo $a; $a++;

}

test();//输出0

test();//输出1

?>

        同时静态变量也提供了一种处理递归函数的方法。递归函数是一种调用自己的函数。写递归函数时要小心,因为可能会无穷递归下去。必须确保有充分的方法来中止递归。以下这个简单的函数递归计数到 10,使用静态变量 $count 来判断何时停止

<?php

function test()

{undefined

static $count = 0; $count++; echo $count; if ($count < 10) {undefined

test();

} $count--;

}

?>

参数的传递


        在调用函数时,需要向函数传递参数,被传入函数的参数称为实参,而函数定义的参数称为形参。而向函数传递参数的方式有四种,分别是值传递、引用传递、默认参数和可变长度参数。

按值传递参数

默认的传参方式,我们在传递参数的时候默认使用的就是这个方式,对形式参数的操作,不会影响到实际参数的值。因此如果不希望函数修改实参的值,就可以通过值传递的方式。

按引用传递参数

按引用传递参数,对形式参数的操作会影响实际参数。这样我们在函数内部是对这个参数本身进行操作。

函数的默认参数

可以给形式参数设置默认值,直接赋值就可以设置

注意:必须从右往左赋值,右边的必须要有,才能给左边的赋值,如果只给左边的赋值,而不给右边的赋值,左边的赋值将不作数。

可变长度参数列表

在 PHP 5.6 及以后的版本中,函数的形式参数可使用…来表示函数可接受一个可变数量的参数,可变参数将会被当作一个数组传递给函数。

func_get_args();
func_get_arg();
func_num_args();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值