Определение последней итерации цикла. 
		
		
		
		Здравствуйте. 
	Имеется сценарий php, он делает ряд запросов к БД Firebird, на основании которых формирует довольно сложный (большое кол-во вложенности, разная структура "чилдренов") json вывод для скрипта на стороне клиента. Вывод ведется на основании echo() из выборки по ibase_fetch_row(), т.е. сразу в поток, без предварительного формирования массивов и json_encode(). Вопрос. Как исхитриться и определить конец последней итерации в каждом из циклов вида while ($row = ibase_fetch_row($db_fb_query)) {...} ? Управляющие конструкции и условие по сравнению типа end() или next() по примеру http://dycore.blogspot.com/2010/03/foreach-php.html тут не катят, т.к. работаем не с массивом. Определение последней итерации необходимо, чтобы выяснить, ставить ли в конце после некоторых "}" символ запятой или нет. Создавать многомерные вложенные массивы и строить деревья будет сложновато, т.к. сценарий будет в будущем неоднократно модифицироваться. Выводить сперва в строку, а затем тримить ее справа на "," и затем отдавать в эху - тоже не совсем хорошо, строки могут быть очень длинные, потенциально можно упереться в прекомпиленное значение длины строкового типа 65539 на каком-нибудь хостинге...  | 
	
		
 После цикла делайте rtrim(",") и всё:) 
	 | 
	
		
 Цитата: 
	
  | 
	
		
 эмм, а почему не собирать в одну строку? В чём проблема? Просто вы так как минимум делаете лишние телодвижения, так как есть разница у одного echo и тысячи echo. 
	Другое предложение: создайте переменную которая будет увеличиваться с каждым проходом цикла и сравнивайте с общим количеством полученных записей.  | 
	
		
 В строку собрать нельзя, т.к. прекомпиленный php по дефолту имеет (если память не изменяет) ограничение для строкового типа в 65539. 
	100% можно будет в будущем нарваться на хостинг с таким ограничением...  | 
	
		
 Общее кол-во записей в ibase к сожалению получить невозможно без предварительного прогона "впустую" запроса (и подсчета кол-ва выданных строк в цикле), аналога того же mysql_num_rows() в php для него просто нет... 
	 | 
	
		
 Если я не ошибаюсь, то в php нету ограничения на длину строки, кроме как объём оперативки, но есть ограничение буфера вывода. 
	И вот есть такое решение для echo  | 
	
		
 Хм, возможно вы и правы. 
	Просто когда-то натыкался на явное ограничение в работе строковых функций с длинными строками...  | 
	
		
 Allan Stark, 
	Вот допустим тут написано тоже самое:)  | 
	
		
  | 
| Часовой пояс GMT +3, время: 04:15. |