PHP - 5.4 Array dereferencing 数组值

在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:\Php\xampp\htdocs\test\PHP - 5.x\example.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

时间: 2024-10-12 15:36:09

PHP - 5.4 Array dereferencing 数组值的相关文章

无序数组array, 找到数组中两个数的最大差值

题目链接: 无序数组array, 找到数组中两个数的最大差值, 且大数出现在小数之后,如:arr[i]-arr[j], 且 i<j.比如: array 是 [2, 3, 10, 6, 4, 8, 1],最大差值是8(10-2) 解题思路: 记录当前访问过的数组中的最小值 min_val; 2) 当前元素值arr[i] - min_val 和 max_diff作比较 若大于 max_diff , 则更新它的值 1 import javax.validation.constraints.Min; 2

JavaScript Array 属性 构造器 将数组值转为大写

实例 一个新的数组的方法,将数组值转为大写: Array.prototype.myUcase=function() { for (i=0;i<this.length;i++){ this[i]=this[i].toUpperCase(); } } 创建一个数组,然后调用 myUcase 方法: var fruits=["Banana","Orange","Apple","Mango"]; fruits.myUcase()

PHP的数组值传入JavaScript的数组里

<!doctype html public "-//W3C//DTD HTML 4.0 //EN"> <html><head>       <title>PHP的数组值传入JavaScript的数组里</title>       <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><s

【LeetCode-面试算法经典-Java实现】【215-Kth Largest Element in an Array(数组中第K大的数)】

[215-Kth Largest Element in an Array(数组中第K大的数)] [LeetCode-面试算法经典-Java实现][所有题目目录索引] 代码下载[https://github.com/Wang-Jun-Chao] 原题 Find the kth largest element in an unsorted array. Note that it is the kth largest element in the sorted order, not the kth d

取出两个二维数组中不重复的数组值方法

1 var arr1=[ 2 [1,2,3,4,5], 3 [1,2,3,4,5], 4 [12,3,4], 5 [6,7,8], 6 [32,2] 7 ]; 8 var arr2=[ 9 [1,2,3,4,5], 10 [6,7,8], 11 [6,7,8], 12 [15,16] 13 ]; 14 console.log(fillterArr(arr1,arr2));// ["12,3,4"] ["15,16"] ["32,2"] 方法: 1

golang之 Array(数组)

目录 一.Array(数组) 二.数组的定义 1. 基本语法 三.数组的初始化 1. 方式一 2. 方式二 3. 方式三 四.数组的遍历 1. 方式一:for循环遍历 2. 方式二:for range遍历 五.多维数组 1. 二维数组的定义 2. 二维数组的遍历 六.数组是值类型 七.数组的其他相关方法 一.Array(数组) 数组是同一种数据类型元素的集合. 在Go语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化 二.数组的定义 1. 基本语法 // 基本语法: var

JavaScript------去掉Array中重复值

转载: http://blog.csdn.net/teresa502/article/details/7926796 代码: // 删除数组中重复数据 function removeDuplElem(array){ for(var i=0; i<array.length; i++){ for(var j=i+1; j<array.length;j++){ if(array[i]==array[j]){ array = removeElement(j,array);//删除指定下标的元素 i=-

删除数组值

1 // var a = [1,2,3]; 2 // a.length = 2; 3 // console.log(a); >>[1, 2] 4 // a.length = 0; 5 // console.log(a); >>[] // 简单的实现了删除数组值

【Sorting】【Array】数组中的逆序对

数组中的逆序对 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数. 输入: 每个测试案例包括两行: 第一行包含一个整数n,表示数组中的元素个数.其中1 <= n <= 10^5. 第二行包含n个整数,每个数组均为int类型. 输出: 对应每个测试案例,输出一个整数,表示数组中的逆序对的总数. 样例输入: 4 7 5 6 4 样例输出: 5 思路 分治的思想,统计两边内部的逆序对,以及左右两边之间的逆序对 代码 long