PHP引用操作以及外部操作函数的局部静态变量的方法

通过引用方式在外部操作函数或成员方法内部的静态变量

下面举个简单的例子,说明三个关于引用方面的问题:

1. 参数引用后函数内进行类型转换同样是地址操作

2. 参数引用后再传递给其他函数时需要再次添加引用符才能保持地址操作

3. 函数返回值引用必须在函数申明时以及调用时都添加引用操作符

该例子使用的是对象方法的操作,同样适用于函数

<?php
class A {
	public function & test1(& $a) {
		static $i = 0;
		var_dump($i);
		$a = (array) $a;
		$a['domain'] = 'http://blog.csdn.net/zhouzme';
		$this->test2($a);
		$i++;
		var_dump($a);
		var_dump($i);
		return $i;
	}

	protected function test2(& $a) {
		$a['name'] = '蜗牛';
	}
}

$obj = new A();
$a = '';
$c = & $obj->test1($a);
$c++;
var_dump($a);
$obj->test1($a);
var_dump($a);

输出的结果

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索函数
, 变量
, 静态
, 参数
, 方法
例子
静态局部变量、c 局部静态变量、静态局部变量初始化、未引用的局部变量、静态方法中的局部变量,以便于您获取更多的相关知识。

时间: 2024-10-30 23:51:19

PHP引用操作以及外部操作函数的局部静态变量的方法的相关文章

python类和函数中使用静态变量的方法

  本文实例讲述了python类和函数中使用静态变量的方法.分享给大家供大家参考.具体分析如下: 在python的类和函数(包括λ方法)中使用静态变量似乎是件不可能[Nothing is impossible]的事, 但总有解决的办法,下面通过实现一个类或函数的累加器来介绍一些较为非主流的方法 方法一.通过类的__init__和__call__方法 ? 1 2 3 4 5 6 7 8 9 10 11 class foo: def __init__(self, n=0): self.n = n d

了解PHP的返回引用和局部静态变量

  这篇文章主要介绍了了解PHP的返回引用和局部静态变量,返回引用一般的写法是方法名前加&,局部静态变量也有很妙用,需要的朋友可以参考下 先阅读手册 ========== 从函数返回一个引用,必须在函数声明和指派返回值给一个变量时都使用引用操作符 & : 代码如下: function &returns_reference() { $someref = 0; return $someref; } $newref = &returns_reference();//相当于 $ne

了解PHP的返回引用和局部静态变量_php技巧

先阅读手册 ========== 从函数返回一个引用,必须在函数声明和指派返回值给一个变量时都使用引用操作符 & :  复制代码 代码如下: <?php  function &returns_reference()  {      $someref = 0;      return $someref;  }     $newref = &returns_reference();//相当于 $newref = &$someref;  ?> 有关引用的更多信息, 请

PHP static局部静态变量和全局静态变量总结

 使用静态局部变量的原因是它不能被外部使用,但是它的值依然在没此使用后保留.虽然使用全局变量可以实现相同的功能,但是它经常会造成意外 静态局部变量的特点:   1.不会随着函数的调用和退出而发生变化,不过,尽管该变量还继续存在,但不能使用它.倘若再次调用定义它的函数时,它又可继续使用,而且保存了前次被调用后留下的值 2.静态局部变量只会初始化一次 3.静态属性只能被初始化为一个字符值或一个常量,不能使用表达式.即使局部静态变量定义时没有赋初值,系统会自动赋初值0(对数值型变量)或空字符(对字符变

c语言-C中什么情况下把局部变量定义为局部静态变量

问题描述 C中什么情况下把局部变量定义为局部静态变量 之前都是定义的要么是全局变量要么就局部变量,从来没加过static,现在看到有的变量前面加了static,不知道什么类型的变量要这样定义 解决方案 如果你希望在一个函数中对一个变量只执行一次初始化,以后不再初始化,使用上一次结果,就应该使用静态局部变量. 例如: static int n; 其他类型都可以. 解决方案二: 比如说你要在局部计算一个圆的半径,那么你可以将PI的值申请为static,因为PI以后再也不会变更了!希望能够帮到你! 解

PHP static局部静态变量和全局静态变量总结_php技巧

静态局部变量的特点: 1.不会随着函数的调用和退出而发生变化,不过,尽管该变量还继续存在,但不能使用它.倘若再次调用定义它的函数时,它又可继续使用,而且保存了前次被调用后留下的值2.静态局部变量只会初始化一次3.静态属性只能被初始化为一个字符值或一个常量,不能使用表达式.即使局部静态变量定义时没有赋初值,系统会自动赋初值0(对数值型变量)或空字符(对字符变量):静态变量的初始值为0.4.当多次调用一个函数且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量.虽然用全局变量也可以达到上述目的

VB.NET局部静态变量介绍

经过长时间学习VB.NET局部静态变量,于是和大家分享一下,看完本文你肯定有不少收获,希望本文能教会你更多东西.VB.NET能够实现很多C#不能做到的功能,如When语句.Optional参数.局部Static变量.对象实例访问静态方法.Handles绑定事件.On Error处理异常.Object直接后期绑定等等.VB和C#同属.NET的语言,编译出来的是同样的CIL,但为什么VB支持很多有趣的特性呢.我们一起来探究一下VB.NET局部静态变量. VB.NET局部静态变量 VB支持用Stati

关于如何操作其他窗体的控件或变量的方法

变量|控件 关于如何操作其他窗体的控件或变量的方法! 其实解决的方法有很多,在这里只做简单的总结.对于其他方法,请多指教! 1. 定义全局变量 其实这个方法比较简单也很好理解,我们只要在一个module里面定义了两个全局变量就可以了. 例如:public frm1 as new form1() Public frm2 as new form2() 这样,我们无论在哪里想访问就很容易了.但是,这样做会耗费比较多的系统资源.一般来说不要使用全局变量. 2. 使用shared 前缀 使用了shared

关于如何操作其他窗体的控件或变量的方法!

变量|控件 关于如何操作其他窗体的控件或变量的方法!其实解决的方法有很多,在这里只做简单的总结.1.  定义全局变量其实这个方法比较简单也很好理解,我们只要在一个module里面定义了两个全局变量就可以了.例如:public frm1 as new form1()      Public frm2 as new form2()这样,我们无论在哪里想访问就很容易了.但是,这样做会耗费比较多的系统资源.一般来说不要使用全局变量.2.  使用shared 前缀使用了shared定义的字段(变量)或者属