Несколько ошибок в вашем коде:
foreach($ginfo as $ginfo[$i]):
{$i=0; $i++;}
На первой итерации $i
не определено, поэтому первое значение, извлеченное из $ginfo
для цикла foreach, будет сохранено в $ginfo[null]
. Затем вы устанавливаете $i
в 0, увеличиваете его и перебираете, так что теперь следующее значение сохраняется в $ginfo[1]
, как и все дальнейшие итерации. Таким образом, вы получите только два значения, извлеченные из объекта $ginfo
и сохраненные в ключах 'null' и '1'.
Позже вы делаете
$pgndata = array ( $ginfo[$i]->Id);
Вы не делаете это внутри цикла, поэтому $pgndata
становится массивом с единственным элементом, взятым из $ginfo[1]->Id
. Вы тогда сразу делаете
foreach($pgndata as $ginfo[$i]->Id):
но $pgndata
содержит только один элемент, что объясняет, почему у вас есть только один элемент вывода.
Я не знаю, что делает ваш ->loadObjectList()
наверху. Это возвращает массив? Объект? Если это какой-либо массив, какой смысл в первом цикле foreach? Вы уничтожаете все, кроме первых двух значений, присутствующих в нем.
Никогда не стоит пытаться модифицировать массив, пока вы зацикливаетесь на нем в цикле foreach. Это похоже на попытку сменить шину, мост и трансмиссию на своем автомобиле, когда вы едете по шоссе со скоростью 100 миль в час. Возможно, вам повезет однажды, а в остальное время вы попадете в тонкое пятно кетчупа.
Кроме того, почему вы смешиваете синтаксисы {}
и :
/ end
? Выберите один или другой, но не используйте оба. Брекеты стандартные и общепризнанные. версия: / end гораздо менее популярна и незнакома большинству людей.