>  기사  >  백엔드 개발  >  php引用(&)

php引用(&)

WBOY
WBOY원래의
2016-06-23 13:09:371337검색

##### php引用php引用允许两个变量指向同一个内容```<?php$a = &$b;//$a和$b指向了同一个变量?>```如果对一个未定义的变量进行引用赋值,引用穿参,则会自动创建该变量```function foo(&$var){}foo($a);var_dump($a);//输出null $b = array();foo($b['b']);var_dump(array_key_exists('b',$b));//bool true$c = new stdClass();foo($c->d);var_dump(property_exists($c,'d'));//bool true```如果在一个函数内部给一个声明为global变量赋予一个引用,该引用只在函数内部可见,可以通过使用$GLOBALS数组避免```$var1 = "example variable";$var2 = "";function global_references($use_globals){    global $var1,$var2;    if(!$use_globals){        $var2  =& $var1;    }else{        $GLOBALS["var2"] =& $var1;    }}global_references(false);echo "var2 is set to $var2"."</br>";//"var2 is set to "global_references(true);echo "var2 is set to $var2"."</br>";//"var2 is set to example variable"```取消引用当`unset`一个引用,只是断开了变量名和变量内容之间的绑定,并不代表变量的内容被销毁了```<?php$a = 1;$b =& $a;unset($a);?>```函数的引用传递```function test(&$a){$a = $a +100;}$b = 1;echo $b;	//输出1test($b);//这里$b传递给函数的其实是$b变量内容所处的内存地址,通过函数里改变$a的值就可以改变$b的值了echo $b;```函数的引用返回```<?phpfunction &test(){    static $b=0;//申明一个静态变量    $b=$b+1;    echo $b;    return $b;}$a=test();//这条语句会输出 $b的值 为1$a=5;$a=test();//这条语句会输出 $b的值 为2$a=&test();//这条语句会输出 $b的值 为3//此处a得到的是B的地址//将A置换为5之后相应的b也会变为A的值$a=5;$a=test();//这条语句会输出 $b的值 为6?>```引用结构出现在面向对象中```class fucker{    private $data = 'hi';    public function &get(){        return $this->data;    }    public function out(){        echo $this->data;    }}$q = new fucker();$d = & $q->get();$q->out();$d = 'fuck';$q->out();$d = 'u';$q->out();$d = 'sir';$q->out();//hifuckusir```

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.