php 中引用的应用
<?php // http://blog.csdn.net/samxx8/article/details/37564103 /** 在PHP 中引用的意思是:不同的名字访问同一个变量内容. (1) 变量之间的引用: $a = 10 ; $b =$a ; // 此时$b和$a所指向的是同一存储地址 ,如果$a = 11 ; 则zend会开辟一个新的单元从来是的$a = 11 ; $b 还是原来的地址 $a = 10 ; $b =&$a ; // 此时$b 就是$a的别名,比如这个人叫小张,大名叫张三一样,如果 $a = 11 ; $b 也会跟着变 */ $a="ABC"; $b =&$a; echo $a;//这里输出:ABC echo $b;//这里输出:ABC $b="EFG"; echo $a;//这里$a的值变为EFG 所以输出EFG echo $b;//这里输出EFG // (2) 函数的传址调用(这里使用引用的意义在于,对于大数组节省内存空间) function conTest(&$p_vale){ $p_vale = $p_vale *2 ; } $value_1 = 1; echo $value_1; // 1 conTest($value_1); // 相当于变量的别名 echo $value_1 ; // 2 //(3) 函数的引用 function &conFuncTest(){ static $b=0;//申明一个静态变量 $b=$b+1; echo $b; return $b; } echo '函数的引用<br/>' ; $a=conFuncTest();//这条语句会输出 $b的值 为1 $a=5; $a=conFuncTest();//这条语句会输出 $b的值 为2 $a=&conFuncTest();//这条语句会输出 $b的值 为3 // 此时相当于$a = &$b ; $a=5; // 此时 $b是$a的别名 $b = 5; $a=conFuncTest(); //这条语句会输出 $b的值 为6 //(4) 对象的引用,对象的引用也是为了节省空间 class object{ public $value = 'Hello world'; // 如果想要clone则不让克隆 public function __clone(){ $this->value = 'not clone'; } } $oBject_a = new object; $oBject_b = $oBject_a; // 上面等效于 $oBject_b = &$oBject_a; echo $oBject_a->value;//这里输出ABC // 修改对象a的值,会影响b的值,因为$b 是$a的引用 $oBject_a->value = 'not hello'; echo $oBject_b->value;//这里输出not hello // 如果不想影响对象a的值,可以使用魔术方法 __clone $obj2 = clone $oBject_a; echo $obj2->value; //(5) 变量销毁 $a = 11 ; $b =&$a ; unset($a); // 此时 $b = 11; // 相当于 function quoteTest(){ global $var ; //相当于 $var = &$GLOBALS['var']; unset($var); //删除只是删除引用,而引用的内容还存在,同上这并不意味着变量内容被销毁了 } $var=1; quoteTest(); echo $var; // echo $wlt = 111; print_r($GLOBALS); unset($wlt) ; print_r($GLOBALS);
로그인 후 복사
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사
KB5055523을 수정하는 방법 Windows 11에 설치되지 않습니까?
3 몇 주 전
By DDD
KB5055518을 수정하는 방법 Windows 10에 설치되지 않습니까?
3 몇 주 전
By DDD
<garden> : 정원 재배 - 완전한 돌연변이 가이드
2 몇 주 전
By DDD
<gum> : Bubble Gum Simulator Infinity- 로얄 키를 얻고 사용하는 방법
3 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌
KB5055612 수정 방법 Windows 10에 설치되지 않습니까?
3 몇 주 전
By DDD

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)