Zacznijmy od kilku podstawowych rzeczy. W PHP coś takiego jak hello
będzie oceniać na ciąg "hello"
. Aby odwołać się do zmiennej, można użyć następującej składni: ${expr}
. Istnieje również skrót do tego, $foo
, który z grubsza oceni to: ${"foo"}
.
Ponadto prawdopodobnie wiesz, że możesz przypisać wiele zmiennych naraz: $a=$b=$c='hello';
, na przykład. To przydzieli $a
, $b
i $c
do 'hello'
. Jest to faktycznie reprezentowane jako $a=($b=($c='hello')));
. $foo=value
to wyrażenie, które po ustawieniu $foo
ustali na value
.
Wyciągu kod wygląda następująco:
echo ${!${!1}=ReturnArray()}['a'];
Pierwszą rzeczą, tak, oczywiście, to zadzwonić ReturnArray
. Następnie oblicza wartość !1
, która jest wartością false. Dlatego ${!1}
tworzy zmienną o nazwie false
, ale nie jest łańcuchem (?!). Następnie stosuje do tablicy nie operację. Wszystkie niepuste tablice są zgodne z prawdą, więc nie operacja zmienia ją na false
. Następnie ponownie używa tej składni ${}
, aby pobrać zmienną o nazwie false
. Następnie używa dostępu do tablicy, aby pobrać wartość w tablicy dla klucza 'a'
.
Mam nadzieję, że to ma sens.
Laureat nagrody ezoterycznej PHP idzie do ... – Dan
Co odpowiedzi wydają się być brak jest, że jest to obejście dla faktu, że 'function() [subscript]' jest faktycznie (i chciałbym, żebym to robił) a * błąd składni * w PHP. –