zoukankan      html  css  js  c++  java
  • php引用

    php的引用(就是在变量或者函数、对象等前面加上&符号)
    在PHP 中引用的意思是:不同的名字访问同一个变量内容。
    与C语言中的指针是有差别的.C语言中的指针里面存储的是变量的内容,在内存中存放的地址。

    1.变量的引用
    <?
    $a="ABC";
    $b =&$a;
    echo $a;//这里输出:ABC
    echo $b;//这里输出:ABC
    $b="EFG";
    echo $a;//这里$a的值变为EFG 所以输出EFG
    echo $b;//这里输出EFG
    ?>

    2.函数的引用传递(传址调用)

    <?php
        function test(&$a)
        {
            $a=$a+100;
        }
        $b=1;
        echo $b;//输出1
        test($b);   //这里$b传递给函数的其实是$b的变量内容所处的内存地址,通过在函数里改变$a的值 就可以改变$b的

    值了
        echo "<br>";
        echo $b;//输出101
    ?>


    3.函数的引用返回
    <?php
    function &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=5;
    $a=test();//这条语句会输出 $b的值 为6
    ?>

    PHP规定通过$a=&test(); 方式得到的才是函数的引用返回
    其实就是$a的值改变,&test函数的$b变量也跟着变了

    函数的引用在对象中使用比较广泛
    <?php
    class talker{

        private $data = 'Hi';

        public function & get(){
            return $this->data;
        }
       
        public function out(){
            echo $this->data;
        }   

    }

    $aa = new talker();
    $d = &$aa->get();

    $aa->out();
    $d = 'How';
    $aa->out();
    $d = 'Are';
    $aa->out();
    $d = 'You';
    $aa->out();
    ?>


    4.对象的引用
    <?php
        class a{
            var $abc="ABC";
        }
        $b=new a;
        $c=$b;
        echo $b->abc;//这里输出ABC
        echo $c->abc;//这里输出ABC
        $b->abc="DEF";
        echo $c->abc;//这里输出DEF
    ?>

    在PHP5中 对象的赋值是个引用的过程。上列中$b=new a; $c=$b; 其实等效于$b=new a; $c=&$b;
    PHP5中默认就是通过引用来调用对象, 但有时你可能想建立一个对象的副本,并希望原来的对象的改变不影响到副本 . 为了这样的目的,PHP5定义了一个特殊的方法,称为__clone。
    自 PHP 5 起,new 自动返回引用,因此在此使用 =& 已经过时了并且会产生 E_STRICT 级别的消息。

  • 相关阅读:
    积跬步,聚小流------关于UML类图
    深度学习 Deep Learning UFLDL 最新 Tutorial 学习笔记 1:Linear Regression
    数字语音信号处理学习笔记——语音信号的短时频域分析(2)
    PHP程序猿必须学习的第二课——站点安全问题预防
    Connection for controluser as defined in your configuration failed.
    NYOJ 76 超级台阶
    单片机小白学步系列(十) 单片机程序下载相关知识
    SQL 语言划分
    UVA 11754
    客户端远程方法声明
  • 原文地址:https://www.cnblogs.com/itfenqing/p/4429412.html
Copyright © 2011-2022 走看看