2014-07-24 37 views
1

我在质疑自己,为什么这个工作?为什么这个有效? PHP函数直接数组值

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

Result: string(1) "1" 

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

+1

我们不知道为什么*你以前没有见过这个,但它在很多语言中被广泛使用,被称为* array dereferencing *。实际上PHP已经很晚了。 – deceze

+2

它被称为[数组解引用](http://php.net/manual/en/migration54.new-features.php)。您之前没有看到它,因为许多系统运行<5.4,因此没有此功能 – kero

+2

5.4+中的有效语法。如果你一直坚持5.3,你将不会看到它。 – bcmcfc

回答

7

这就是所谓的数组语法,你可以读到它here:取消引用已添加

功能阵列,例如foo()[0]

的信息here另一个位:

作为PHP 5.4的能够阵列取消引用函数或方法调用直接的结果。之前只能使用临时变量。

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。这是相同的,除了数组/字符串文字(而不是函数调用)。

+1

这不是*文字*取消引用。 – deceze

+0

是的,对不起,我会尽快修复它。 –

+2

你不需要,我已经发布了一个答案。 –

相关问题