Почему я получаю эту ошибку при попытке получить доступ к любому из ключей массива, используя следующее:Недопустимое смещение строки при использовании foreach, связанное с оператором SQL
$product_cat = '22';
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('name', 'alias', 'parent')));
$query->from($db->quoteName('#__k2_categories'));
$query->where($db->quoteName('parent')." = " .$product_cat);
$db->setQuery($query);
$row = $db->loadObjectList();
print_r($row);
foreach ($row as $value) {
foreach($value as $result) {
echo '<ul>';
echo '<li><a href="#">' . $result['name'] . '</a></li>';
echo '</ul>';
}
}
следующий массив возвращается:
Array (
[0] => StdClass объекта ([имя] => Стимуляция Химикалии [псевдоним] => стимуляция-химических веществ [родитель] = > 22)
[1] => stdClass Object ([name] => Цементирующие химические вещества [псевдоним] => цементировочные химикаты [parent] => 22)
[2] => stdClass Object ([name] => Улучшенное восстановление масла [alias] => улучшенное восстановление масла [parent] => 22)
[3] => stdClass Object ([n ame] => Добавки для буровых растворов [псевдоним] => буровые добавки-добавки [родительские] => 22)
[4] => stdClass Object ([name] => Растворители и поверхностно-активные вещества [alias] => растворители и -суперфактанты [родительские] => 22)
[5] => stdClass Object ([name] => Coil Tubing Chemicals [alias] => катушки-химикаты [родительские] => 22)
[6] = > StdClass Object ([имя] => производство химических веществ [псевдоним] => производственные химикаты [родитель] => 22))
Так что я не уверен, что происходит, я просто пытаюсь получить доступ " имя, «псевдоним» и «родительский» и выплюнуть их в разных местах в эхом html-строке. Есть идеи?
На какой именно строке сообщается об ошибке? У вас нет массива массивов, у вас есть массив объектов 'stdClass'. Но это не должно нарушать 'foreach ($ value as $ result)'. Таким образом, вы _can_ перебираете объект. –
Извините, Майкл, код, который разбивал его, был $ result ['name'] '. Я обновлю это, чтобы отразить это для будущих читателей. – jasenmp
О, я вижу - по какой-то причине мне не хватало во внутреннем цикле и читал его, как будто у вас был просто «$ result» (который работал бы), а не '$ result ['name']'. –