echo ${!${false}=getArray()}[0];
This is how it works, step by step
${false}=getArray()
assigns the result of getArray to a variable with an empty name ('' or null would work instead of false)
!${false}=getArray()
negates the above value, turning it to boolean false
${!${false}=getArray()}
converts the previous (false) value to an (empty) string and uses this string as a variable name. That is, this is the variable from the step 1, equal to the result of getArray.
${!${false}=getArray()}[0];
takes index of that "empty" variable and returns an array element.
Some more variations of the same idea
echo ${1|${1}=getArray()}[1];
echo ${''.$Array=getArray()}[1];
function p(&$a, $b) { $a = $b; return '_'; }
echo ${p($_, getArray())}[1];
As to why getArray()[0]
doesn't work, this is because php team has no clue how to get it to work.