php 函数变量作用域(传值与传应用)

php中变量默认是传值赋值,既当将一个表达式的值赋予一个标量时,整个原始表达式的值被赋值到目标变量。这意味着,当一个变量的值赋予另外一个变量时,改变其中一个变量的值,将不会影像另外一个变量。
php也提供了另外一种方式给变量赋值:引用赋值。这意味着新的变量简单引用(“指向” 原变量地址)了原始变量。改动新的变量将影像到原始变量,反之亦然。使用引用赋值,简单将一&符号加到将要赋值的变量前。

对象默认是传引用。
对于较大的数据,传引用比较好,这样会节省内存的开销。

变量的作用域(scope):函数内的变量只能用在定义它的函数内。
例如:

function doublevalue($var){
    $temp = $var * 2;
}
$variable = 3;
doublevalue($variable);
echo "\$variable is :$variable";
//$variable is :
echo "\$temp is :$temp";
/*
* Notice: Undefined variable: temp
* $temp is :
*/

因为函数doublevalue()没有返回值,所以 variable3 temp在函数内,所以函数外不存在该变量
若想在脚本其他地方引用函数变量,最简单的方法就是return 返回结果, 调用的脚本可以仅给局部变量(local variable)赋予返回值。

function doublevalue($var){
    $temp = $var * 2;
    return $temp;
}
$variable = 3;
$temp = doublevalue($variable);
echo "\$temp is :$temp";
//$temp is :6

在函数内部同样可以使用变量名称 temp. temp跟函数外部的$temp是不一样的。一般的规则:仅在函数内部使用的变量就生存在函数内部,函数外部是否有同名变量对它毫无影响。

但一下三种情况例外:
1、由引用(reference)传递的变量;
2、在函数中被定义为全局变量(global variable)的变量
3、PHP在运行时自动生成的superglobal(也有人称为auto-global、自动全局变量),
负责存储用户及环境值。

若想获取函数内的内容,除了使用return语句返回值,也可使用引用传参。
引用(reference)某个将作为参数的变量,也是返回运算结果或使用全局变量的方法之一。既,若在函数内部改变了某个变量的值将影响原始变量。

function doublevalue1(&$var1){
    $var1 = $var1 * 2;
}
$variable1 = 3;
doublevalue1($variable1);
echo "\$variable1 is : $variable1";
//$variable1 is : 6
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值