Владислав: не понял - "некоторую информацию цикл не выводит так как id лежат за макс значением количества строк. " И нет желания включать телепата, reset id НЕ НУЖЕН и это не НЕДОЧЕТ, у вас логика скрипта неправильная по-ходу
Сергей: самый умный что ли? обычно если выбран, то выполняют какую-то функцию, иначе другую, вот поэтому я написал так как я написал, а ваш вариант подходит, если нужно присвоить переменной какое-то значение и т.д.
stockerp: ну и все правильно же О_О сначала не равны, поэтому просто вывод, следующий элемент равен предыдущему, поэтому вывод пустой строки и самой строки и так далее
stockerp: а вы попробовали хотя бы?
первая итерация - пустая строка сравнивается со значением, выдаст false (если значение тоже пустое, конечно) и переменной присвоится новое значение, следующая итерация - проверяем предыдущее значение равно текущему - если да, то выводим пустую строку, а дальше обычный вывод.
stockerp: потому что вы проверяете $item['a1'] НЕ РАВНО $last_value , поэтому и выводится пустая строка, т.к. изначально они не равны, вам нужно вывести если они РАВНЫ.
stockerp: break line и есть \r\n если я не ошибаюсь.
в начала у вас строка равна пустоте, я прав? $last_value = ""; при первой итерации если сравнить $item['a1'] и $last_value - они не должны быть идентичны, значит первая строка добавится как и должна быть.
а если $item['a1'] может быть пустым, то условие будет выглядеть так - if(!empty($last_value) and $last_value == $item['a1']) //тут выводим пустую строку. или же можете присвоить $last_value = null; и проверить на null и т.д.
stockerp: короче и читабельнее , а еще лучше в двойные кавычки завернуть содержимое переменной, а то переход с одинарных кавычек на двойные ради break line тоже не айс. Это просто рекомендации, критичного ничего нет
Alksar: в каком-то паттерне рассматривается именно данная проблема, вроде паттерн СТРАТЕГИЯ, если не ошибаюсь, прочтите, может поможет.
А так все зависит от вас, вы можете в наследниках поставить заглушку, либо выбросить исключение и т.д. но , конечно, лучше правильно все реализовать
stockerp: для начала пишите так - $html .= 'BLA BLA BLA'; , а не $html = $html.'BLA BLA BLA';
насчет самого вопроса - до цикла объявляете пустую переменную, в начале цикла сравниваете, если одинаковые, то добавляете пустую строку, далее зависит ВМЕСТО повторного значения вывести или в дополнении к повторному значению вывести пустую строку, и в зависимости от этого добавляете else или опускаете. и естественно обновляете ту переменную, которую объявляли до цикла, чтоб проверить следующее значения