首页 > 代码库 > PHP - 5.4 Array dereferencing 数组值

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 = http://www.mamicode.com/explode(‘;‘,$str)[0];>

  

结果同为:a

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

<?php    class Example{                private $value = http://www.mamicode.com/[];>

  

会出现如下报错

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 = http://www.mamicode.com/[];>

上面的例子输出:test

 

PHP - 5.4 Array dereferencing 数组值