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中,数组是当一个普通变量,值传递是要一个实参的一个拷贝副本,跟实参无关,引用传递后可以改变实参的值
    而类的对象是无论值传递和引用传递都是引用传递,是对对象的引用,都会改变实参的值

  • 相关阅读:
    2013年元旦新年好
    2012第52周三阴雨
    2013第1周四雪
    2013年元旦新年好
    2013第1周三阴冷
    2012第52周日晴冷
    2012周六补记
    PHP怎么调用其他类的方法
    面向对象复习笔记(一)
    Laravel 引入自定义类库或第三方类库
  • 原文地址:https://www.cnblogs.com/timelesszhuang/p/3682784.html
Copyright © 2011-2022 走看看