我在问自己,为什么这样做?
$key = 'question_1';
$key = explode('_', $key)[1];
var_dump($key);
Result: string(1) "1"
我的一位同事用过这个,但是怎么称呼?
答案 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。它是相同的,除了数组/字符串文字(而不是函数调用)。