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

     

  • 相关阅读:
    linux c 正则表达式
    【编译原理】1. 宏观结构
    编译原理
    知我所未知,方行我所未至
    接口返回值中的状态值设置
    Quotes in shell(bash, csh)
    Blog 081018
    58同城职位分类数据 json
    ckeditor小记
    三大WEB服务器对比分析(apache ,lighttpd,nginx)
  • 原文地址:https://www.cnblogs.com/zcy_soft/p/2283570.html
Copyright © 2011-2022 走看看