zoukankan      html  css  js  c++  java
  • [转载]php 数组 类对象 值传递 引用传递 区别

    一般的数据类型(int, float, bool)不做这方面的解说了

    这里详细介绍一下数组和的类的对象作为参数进行值传递的区别

    数组值传递

    实例代码:

    <?php
     
    function main() {
            $cc = array(
                'a','b'
            );
            change($cc);
            var_dump($cc);
            die;
    }
    function change($cc){
            $cc = array('dd');
    }
    main();
    ?>
    

      output:

      array(2) {
        [0]=>
        string(1) "a"
        [1]=>
        string(1) "b"
      }

    数组引用传递

    <?php
     
    function main() {
            $cc = array(
                'a','b'
            );
            change($cc);
            var_dump($cc);
            die;
    }
    function change(&$cc){
            $cc = array('dd');
    }
    main();
    ?>
    
    outpout:
    array(1) {
      [0]=>
      string(2) "dd"
    }

    类对象值传递 

    <?php
    class pp{
            public $ss = 0;
    }
    function main() {
            $p = new pp();
            change($p);
            var_dump($p);
            die;
    }
    function change($p){
            $p->ss = 10;
    }
    main();
    ?>
    output:
    object(pp)#1 (1) {
      ["ss"]=>
      int(10)
    }

    类对象引用传递

    <?php
    class pp{
            public $ss = 0;
    }
    function main() {
            $p = new pp();
            change($p);
            var_dump($p);
            die;
    }
    function change(&$p){
            $p->ss = 10;
    }
    main();
    ?>
    object(pp)#1 (1) {
      ["ss"]=>
      int(10)
    }

    总结:php中,数组是当一个普通变量,值传递是要一个实参的一个拷贝副本,跟实参无关,引用传递后可以改变实参的值
    而类的对象是无论值传递和引用传递都是引用传递,是对对象的引用,都会改变实参的值

    转自:http://www.cnblogs.com/zcy_soft/archive/2011/12/10/2283570.html

  • 相关阅读:
    CSS
    CSS样式
    CentOS/Ubuntu 搭载环境所遇问题
    XHTML 注意的地方
    HTML 全局属性 全局事件属性
    shell命令之---Linux文件权限
    shell命令之---使用Linux环境变量
    shell命令之---处理数据文件
    shell命令之---检测磁盘空间
    shell命令之---文件内容查看
  • 原文地址:https://www.cnblogs.com/zhutianpeng/p/4261993.html
Copyright © 2011-2022 走看看