Объектные типы данных - тут ваще не причем.

Да, то что строка является массивом - написано в мануале. Но, (ещё одна "особенность"!) попробуйте запустить по ней цикл, скажем foreach() и будете неприятно удивлены.

Именно, что только "иногда". Ни разу не пгобовали пробежаться по строке "посимвольно"? Это не такая тривиальная задача, как может показаться с первого взгляду.

Почему поведение интерпретатора - кривое, я описал в предыдущем примере (как он додумывается до такого). Там только один "изъян":

выражение $var['const'] должно интерпретироваться как элемент ассоциативного массива. И никак иначе.
Псевдофункция empty() - в том числе ОБЯЗАНА проверять наличие элемента именно ассоциативного массива в данном случае (часть описания isset).

Потому что по тексту сначала идет разименование имени параметра, и дополнительно указание на выборку для проверки элемента параметра - ассоциативного массива. Вот эта, вторая операция интерпретатора и должна была выдать результат проверки "отсуствует". Потому как поиск отсутствующего элемента должен был уже на этом этапе вернуть null. Который и есть true для empty(). Строка - массив, но нумерованный, а не ассоциативный. и Разыскать в ней ассоциативный член, попутно создав его - просто "верх пилотажа".

Проблема в том, что empty() и не заморачивается на проверку структуры. Действительно - нафига?

Любой нормальный ЯП - обладает таким явлением как Синтасическая Диаграмма. Её прелесть в том, что любая ситуация для LL-грамматик (и не только, но это - бОльшая часть ЯП) - однозначны.

Дело в том, что ПХП - ваще не ЯП. Это набор библиотек и способов их использования (внешне похожих на ЯП) для сервера Apache. И все эти "иногда" - как раз легко и просто объясняются этим фактом.

Может он и "хочет стать языком"... но только идет уж очень кружным путем.

"Только так, только личная инициатива и напряженная работа над собой. .. Нужно своей собственной рукой все делать" (с) В.В. Путин:улыб:(а не на "вертикаль власти" надеяться)