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

     

  • 相关阅读:
    Spring 核心API
    python装饰器
    python作业(day1)
    Kali Linux 更新源
    一维数组模拟数据结构-------栈
    Spring事务管理
    Linux用户管理命令
    Linux 帮助命令
    Spring对jdbc的支持
    springboot集成shiro 循环重定向
  • 原文地址:https://www.cnblogs.com/zcy_soft/p/2283570.html
Copyright © 2011-2022 走看看