关于php的引用(就是在变量或者函数、对象等前面加上&符号)的作用,我们先看下面这个程序。
复制代码 代码如下:
$a = 100; //声明变量a
$b = &$a; //声明变量b,引用自变量a
echo "$a
";
echo "$b
";
$a++; //变量a自增1
echo "$a
";
echo "$b
";//查看变量b,也增加了1,说明使用的是同一存储单元
?>
程序运行结果:
复制代码 代码如下:
100
100
101
101
很多人误解php中的引用跟C当中的指针一样,事实上并非如此,而且很大差别。C语言中的指针除了在数组传递过程中不用显式申明外,其他都需要使用*进行定义,而php中对于地址的指向(类似指针)功能不是由用户自己来实现的,是由Zend核心实现的,php中引用采用的是“写时拷贝”的原理,就是除非发生写操作,指向同一个地址的变量或者对象是不会被拷贝的。
php默认为传值传递:
复制代码 代码如下:
$a = 20;
$b = $a;
$a = $a + 10;
echo $a.' and '.$b;
?>
程序运行结果:
复制代码 代码如下:
30 and 20
要是想变为地址传递需要加&,既:
复制代码 代码如下:
$a = 20;
$b = &$a;
$a = $a + 10;
echo $a.' and '.$b;
?>
程序运行结果:
复制代码 代码如下:
30 and 30
也就是说,&把$a的地址传给了$b,这样的话这两个变量现在共享一个内存的存储区域,就是说它们的值是一样的。
同样的语法可以用在函数中,它返回引用,以及用在 new 运算符中:
复制代码 代码如下:
$bar =& new fooclass();
$foo =& find_var($bar);
?>
引用做的第二件事是用引用传递变量。这是通过在函数内建立一个本地变量,并且该变量在呼叫范围内引用了同一个内容来实现的。说的通俗点就是一个函数的参数是一个本地变量的引用。下面再举例说明一下:
复制代码 代码如下:
function foo(&$val1, $val2) {
$val1 += 1;
$val2 += 1;
}
$a=5;
$b=10;
foo($a,$b);
echo $a;
echo $b;
?>
运行这段代码是给函数传递两个参数,一个是引用$a的内容,一个是$b的值,在执行此函数后,发现$a的内容改变了,而$b的内容则没有变化。
PHP引用的第三个用法是引用返回,这个用法理解起来有点难度,引用返回用在当你想用函数找到引用应该被绑定在哪一个变量上面时。当返回引用时,使用此语法:说的简单点,就还是引用函数的返回。但和参数传递不同,必须在函数定义和函数引用这两个地方都用 & 符号。下面举个例子:
复制代码 代码如下:
function &find_var ($param)
{
/* ...code... */
return $found_var;
}
$foo =& find_var ($bar);
$foo->x = 2;
?>
这个例子给$foo 赋值是函数find_var的返回引用,所以在给$foo->x赋值时就是给find_var的返回引用赋值,而不是简单的赋值。
PHP引用的最后一个用法是引用定位,主要有两个应用:一个是global 引用,当用 global $var 声明一个变量时实际上建立了一个到全局变量的引用。也就是和$var =& $GLOBALS["var"];是一样的。另外一个是$this的用法,在一个对象的方法中,$this 永远是调用它的对象的引用。
0
0
相关文章
如何在 PHP 中动态构建多维关联数组
初学者学php表单get和post区别_初学者学php两者不同【辨析】
PHP探针怎么自定义显示模块_PHP探针自定义显示模块途径【操作】
PHP怎么设置OpenSSL支持_PHP设置OpenSSL支持编译【协议】
Phpstorm如何设置PHP文件模板_Phpstorm设置PHP文件模板途径【分享】
相关标签:
本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门AI工具
相关专题
C++ 单元测试与代码质量保障
本专题系统讲解 C++ 在单元测试与代码质量保障方面的实战方法,包括测试驱动开发理念、Google Test/Google Mock 的使用、测试用例设计、边界条件验证、持续集成中的自动化测试流程,以及常见代码质量问题的发现与修复。通过工程化示例,帮助开发者建立 可测试、可维护、高质量的 C++ 项目体系。
10
2026.01.16
热门下载
精品课程
相关推荐
/
热门推荐
/
最新课程
最新文章









