从函数返回时访问数组元素

Dan*_*iel 9 php arrays indexing return function

一些搜索谷歌(以及我自己的经验)表明,在PHP中,当从同一行的函数调用返回数组元素时,你无法获取它.例如,你做不到:

echo getArray()[0];
Run Code Online (Sandbox Code Playgroud)

但是,我遇到了一个巧妙的小技巧:

echo ${!${false}=getArray()}[0];
Run Code Online (Sandbox Code Playgroud)

它确实有效.问题是,我不知道它为什么会起作用.如果有人能够解释,那就太好了.

谢谢.

use*_*291 10

echo ${!${false}=getArray()}[0];
Run Code Online (Sandbox Code Playgroud)

这是它如何工作,一步一步

${false}=getArray()
Run Code Online (Sandbox Code Playgroud)

将getArray的结果赋给具有空名称的变量(''或null将起作用而不是false)

!${false}=getArray()
Run Code Online (Sandbox Code Playgroud)

否定上述值,将其转为布尔值false

 ${!${false}=getArray()}
Run Code Online (Sandbox Code Playgroud)

将前一个(false)值转换为(空)字符串,并将此字符串用作变量名称.也就是说,这是步骤1中的变量,等于getArray的结果.

${!${false}=getArray()}[0];
Run Code Online (Sandbox Code Playgroud)

获取该"empty"变量的索引并返回一个数组元素.

同一想法的一些更多变化

echo ${1|${1}=getArray()}[1];
echo ${''.$Array=getArray()}[1];

function p(&$a, $b) { $a = $b; return '_'; }
echo ${p($_, getArray())}[1];
Run Code Online (Sandbox Code Playgroud)

至于为什么getArray()[0]不起作用,这是因为php团队不知道如何让它工作.