通过Google进行的一些搜索(以及我的经验)表明,在PHP中,当从同一行的函数调用返回数组元素时,您无法获取该数组元素。例如,您不能执行以下操作:

echo getArray()[0];

但是,我遇到了一个巧妙的小技巧:
echo ${!${false}=getArray()}[0];

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

谢谢。

最佳答案

echo ${!${false}=getArray()}[0];

这就是它的工作方式,一步一步来
${false}=getArray()

将getArray的结果分配给一个名称为空的变量(“或null可以代替false来工作)
!${false}=getArray()

否定上述值,将其设置为boolean false
 ${!${false}=getArray()}

将先前的(假)值转换为(空)字符串,并将此字符串用作变量名。也就是说,这是第1步中的变量,等于getArray的结果。
${!${false}=getArray()}[0];

获取该“空”变量的索引并返回一个数组元素。

同一想法的更多变体
echo ${1|${1}=getArray()}[1];
echo ${''.$Array=getArray()}[1];

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

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

关于php - 从函数返回时访问数组元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3642516/

10-10 19:33