Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么这样做有效?函数中的PHP直接数组值_Php_Arrays - Fatal编程技术网

为什么这样做有效?函数中的PHP直接数组值

为什么这样做有效?函数中的PHP直接数组值,php,arrays,Php,Arrays,我在问自己,为什么这样做 $key = 'question_1'; $key = explode('_', $key)[1]; var_dump($key); Result: string(1) "1" 我的一个同事用过这个,但是这个叫什么?为什么它能工作?因为您使用的是PHP/5.4或更高版本:。在早期版本中,在能够访问单个位之前,必须将结果存储在变量中: $key = 'question_1'; $key = explode('_', $key); $key = $key[1]; va

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

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

Result: string(1) "1"

我的一个同事用过这个,但是这个叫什么?

为什么它能工作?因为您使用的是PHP/5.4或更高版本:。在早期版本中,在能够访问单个位之前,必须将结果存储在变量中:

$key = 'question_1';
$key = explode('_', $key);
$key = $key[1];
var_dump($key);
不过,对于这种特殊情况,good old(从PHP/4开始提供)也同样出色:

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

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

为什么它可以工作?因为您使用的是PHP/5.4或更高版本:。在早期版本中,在能够访问单个位之前,必须将结果存储在变量中:

$key = 'question_1';
$key = explode('_', $key);
$key = $key[1];
var_dump($key);
不过,对于这种特殊情况,good old(从PHP/4开始提供)也同样出色:

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

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

它被称为数组解引用,您可以阅读以下内容:

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

另一点信息:

从PHP5.4开始,可以直接对函数或方法调用的结果进行数组解引用。在此之前,只能使用临时变量


它被称为数组解引用,您可以阅读以下内容:

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

另一点信息:

从PHP5.4开始,可以直接对函数或方法调用的结果进行数组解引用。在此之前,只能使用临时变量


我们不知道为什么您以前没有看到过这个,但是它在许多语言中被广泛使用,被称为数组解引用。实际上PHP已经很晚了,它叫做。您以前没有看到它,因为许多系统运行<5.4,因此在5.4+中没有此功能有效的语法。如果你一直坚持使用5.3,你以前就不会看到它了。@scragar我几乎不会称之为“首选”。如果您必须使用
list()
,您也可以只分配一个变量,然后在下一行使用
$var[1]
。例如,
list
对类似
foo(explode(…)[1])
的东西没有帮助。谢谢大家!我认为这是一种从数组中获取值的非常好的方法。我们不知道为什么您以前没有看到过这种方法,但它在许多语言中被广泛使用,被称为数组解引用。实际上PHP已经很晚了,它叫做。您以前没有看到它,因为许多系统运行<5.4,因此在5.4+中没有此功能有效的语法。如果你一直坚持使用5.3,你以前就不会看到它了。@scragar我几乎不会称之为“首选”。如果您必须使用
list()
,您也可以只分配一个变量,然后在下一行使用
$var[1]
。例如,
list
对类似
foo(explode(…)[1])
的东西没有帮助。谢谢大家!我认为这是一种从数组中获取值的非常好的方法。这不是字面解引用。是的,对不起,我会尽快修复它。我不会故意留下错误的答案:)那不是字面解引用。是的,对不起,我会尽快修复。我不会故意留下错误的答案:)