Отредактировано для архива:
Читая в другом месте онлайн, у меня сложилось впечатление, что вы можете получить доступ к свойствам объекта и членам массива в foreach
петля взаимозаменяемо. ЭТО ОДНАКО НЕПРАВИЛЬНО. Как уже упоминалось в комментариях к моему принятому ответу, foreach
в любом случае не изменяет тип подсказки или приведение. Моя проблема возникла из-за функции, передающей массив массивов вместо массива объектов.
$AllMessages = func_getAllMessages($ThreadID);
foreach($AllMessages as $Message) {
echo $Message->Body; // Error
echo $Message['Body']; // Works
}
Объяснение:
func_getAllMessages()
Простая функция, которая возвращает совпадающие данные из базы данных. При ближайшем рассмотрении, это моя проблема. Я ожидал массив объектов, а не массив, который он фактически предоставлял. Если у вас есть похожие проблемы, проверьте это!
Короче: foreach
не изменяет кастинг / подсказку по типу. Если вы не можете получить доступ к данным определенным образом, проверьте, что ПРЕДОСТАВЛЯЕТ данные foreach
вместо.
Вы можете преобразовать его в объект
foreach($AllMessages as $Message) {
$Message= (object) $Message;
echo $Message->Body;
}
Других решений пока нет …