Интерполяция (строка в двойных кавычках) ассоциативных массивов в PHP

При интерполяции элементов массива PHP с индексированными строками (5.3.3, Win32) может ожидаться или нет следующее поведение:

$ha = array('key1' => 'Hello to me');

print $ha['key1'];   # correct (usual way)
print $ha[key1];     # Warning, works (use of undefined constant)

print "He said {$ha['key1']}"; # correct (usual way)
print "He said {$ha[key1]}";   # Warning, works (use of undefined constant)

print "He said $ha['key1']";   # Error, unexpected T_ENCAPSED_AND_WHITESPACE
print "He said $ha[ key1 ]";   # Error, unexpected T_ENCAPSED_AND_WHITESPACE
print "He said $ha[key1]";     # !! correct (How Comes?)

Интересно, последняя строка кажется правильным кодом PHP . Есть объяснения? Можно ли доверять этой функции?


Редактировать: Точка публикации теперь выделена жирным шрифтом , чтобы уменьшить недопонимание.
44
задан Rais Alam 9 January 2013 в 11:14
поделиться