zoukankan      html  css  js  c++  java
  • PHP

    在5.4之前我们直接获取数组的值得方法如下

    <?php
        $str = 'a;b;c;d';
        list($value) = explode(';',$str);
        echo $value;
    

      

    结果为: a

    但是5.4的Array derenferencing 是什么意思呢?如下

    <?php
        $str = 'a;b;c;d';
        $value = explode(';',$str)[0];
        echo $value;
    

      

    结果同为:a

    其实很简单,但是我们运用当中可能会出现一些的问题。比如

    <?php
        class Example{
            
            private $value = [];
            
            public function getValue(){
                
                return $this->value;
                
            }
        }
        
        $example = new Example;
        
        $example->getValue()['test'] = 'test';
        
        echo $example->getValue()['test'];
    

      

    会出现如下报错

    Notice: Undefined index: test in D:Phpxampphtdocs	estPHP - 5.xexample.php on line 17
    

    上面的代码混淆了返回值和返回引用,在PHP中,除非你显示的指定返回引用,否则对于数组PHP是值返回,也就是数组的拷贝。因此上面代码对返回数组赋值,实际是对拷贝数组进行赋值,非原数组赋值。

    下面是一种可能的解决办法,输出拷贝的数组,而不是原数组:

    $vals = $config->getValues(); 
    $vals['test'] = 'test'; 
    echo $vals['test'];  //test
    

      

    如果你就是想要改变原数组,也就是要反回数组引用,就是显示指定返回引用即可

    <?php
        class Example{
            
            private $value = [];
            
            public function &getValue(){
                
                return $this->value;
                
            }
        }
        
        $example = new Example;
        
        $example->getValue()['test'] = 'test';
    
        echo $example->getValue()['test'];

    上面的例子输出:test

  • 相关阅读:
    差分约束
    c++ 添加
    2 jQuery的入口函数
    1 jQuery的概述
    清除浮动的常用4种方式
    虚函数指针和它对应的虚函数表
    对于C++中顿悟
    前端和后端交互的一些认识
    前端初学者一看就懂:Ajax调用后台接口案例(转)
    前端和后端是怎么交互的(转)
  • 原文地址:https://www.cnblogs.com/uduemc/p/3998750.html
Copyright © 2011-2022 走看看