为什么这样做?来自函数的PHP Direct数组值

时间:2014-07-24 09:44:40

标签: php arrays

我在问自己,为什么这样做?

$key = 'question_1';
$key = explode('_', $key)[1];
var_dump($key); 

Result: string(1) "1"

我的一位同事用过这个,但是怎么称呼?

2 个答案:

答案 0 :(得分:7)

它被称为数组解除引用,您可以阅读here

  

添加了函数数组解除引用,例如foo()[0]

另一部分信息here

  

从PHP 5.4开始,可以直接对函数或方法调用的结果进行数组取消引用。之前只能使用临时变量。

答案 1 :(得分:2)

为什么会这样?因为您使用的是PHP / 5.4或更高版本:Function array dereferencing。在早期版本中,您必须将结果存储在变量中才能访问各个位:

$key = 'question_1';
$key = explode('_', $key);
$key = $key[1];
var_dump($key);

尽管如此,对于这个特殊情况,好的list()(从PHP / 4开始提供)同样很有趣:

$key = 'question_1';
list(,$key) = explode('_', $key);
var_dump($key);

在这一行中,PHP / 5.5添加了一个新变体:array and string literal dereferencing。它是相同的,除了数组/字符串文字(而不是函数调用)。