在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

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

  1. Array.splice返回值是数组

    import flash.display.MovieClip; import flash.display.DisplayObject; var m:MovieClip = new MovieClip( ...

  2. Array(数组)对象-->数组值的修改

    1.修改数组值: 数组对象名[下标] = 新值: 举例:原数组如下: var arr = [1,2,3,4,5] 需求:将arr数组第二个元素的值改为10,代码如下: arr[1] = 10; con ...

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

    <!doctype html public "-//W3C//DTD HTML 4.0 //EN"> <html><head>       &l ...

  4. C#中怎么判断一个数组中是否存在某个数组值

    (1) 第一种方法: ,,}; ); // 这里的1就是你要查找的值 ) // 不存在 else // 存在 (2) 第二种方法: string[] strArr = {"a",& ...

  5. golang之 Array(数组)

    目录 一.Array(数组) 二.数组的定义 1. 基本语法 三.数组的初始化 1. 方式一 2. 方式二 3. 方式三 四.数组的遍历 1. 方式一:for循环遍历 2. 方式二:for range ...

  6. java中Array(数组)的用法

    8.Array(数组)    数组是作为对象来实现的.(really occupy the memopry,真实的占用内存 ) An array is a data structure that st ...

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

    转载: http://blog.csdn.net/teresa502/article/details/7926796 代码: // 删除数组中重复数据 function removeDuplElem( ...

  8. Vscode 调试 C 语言时数组值无法显示的问题

    使用 Vscode 的 Gdb 扩展调试 C 语言时,发现数组变量在 变量列表里面中显示为指针,且只显示为其第一个元素的值,无法看到所有元素的值. 如图所示: 解决: 假设有一个元素个数为10的数组v ...

  9. Vue props中Object和Array设置默认值

    Vue中,在props中设置Object和Array的默认值 seller: { type: Object, default() { return {} } } seller: { type: Obj ...

随机推荐

  1. 使用 Spring 3 MVC HttpMessageConverter 功能构建 RESTful web 服务

    原文地址:http://www.ibm.com/developerworks/cn/web/wa-restful/ 简介: Spring,构建 Java™ 平台和 Enterprise Edition ...

  2. go操作数据库 Go-SQL-Driver/MySQL 使用详解

    go操作mysql的驱动包很多,这里讲解当下比较流行的Go-SQL-Driver/MySQL1.下载安装 执行下面两个命令: 下载:go get github.com/Go-SQL-Driver/My ...

  3. php join函数使用,很是方便

    以前数组转换成用逗号隔开的字符串都是自己写一个数组,最后还要去除多余的一个逗号,好麻烦. 无意中发现join函数,原来一句话就可以了. $_array = array('a','b','c','d', ...

  4. Webx学习(一)

    什么是webx Webx3_Guide_Book中是这样介绍的: Webx是一套基于Java Servlet API的通用Web框架. Webx致力于提供一套极具扩展性的机制.来满足Web应用不断变化 ...

  5. css Hack,用IE11模拟测试的,条件注释要找真IE去测,模拟的无效

    <!DOCTYPE html> <!--[if lt IE 7 ]> <html class="ie6 ie"> <![endif]--& ...

  6. android中3种实现动画效果的方法

    3中实现动画的方法:ImageView imgView = (ImageView)findViewById(R.id.imageView_logo); //第一种动画方法,使用AlphaAnimati ...

  7. php.ini 中开启短标签 <?=$?>

    制参数: short_open_tag = On如果设置为Off,则不能正常解析类似于这样形式的php文件:<?phpinfo()?> 而只能解析<?phpphpinfo()?> ...

  8. Day03 - Python 函数

    1. 函数简介 函数是组织好的,可重复使用的,用来实现单一或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.Python提供了许多内建函数,比如print():也可以自己创建函数,这 ...

  9. mysql:错误日志log_error:

    1.启动错误日志: 在不同的情况下,错误日志会记录在不同的位置,如果没有配置文件指定文件名,则默认为hostname.err 在mysql5.6的RPM发布的方式中,错误日志被放在/var/log/m ...

  10. 常用CentOS 6/7 扩展源

    1.系统自带 baseextrasupdates 2.epel yum install epel-release https://fedoraproject.org/wiki/EPEL 3.el(用于 ...