Cfloop внутри cfloop?
У меня есть вопрос о моем cfloop внутри другого cfloop. Вот мой код:
<cfloop from="1" to="5" index="k">
<cfloop from="#qry.S#" to="#qry.E#" index="i" step="#CreateTimeSpan(0,0,qry.Leng,0)#">
<cfset TimeEnd = dateAdd("n", Leng, i)>
<tr>
<td>(#k#) #timeFormat(TimeStart, "hh:mm tt")# - #timeFormat(TimeEnd, "hh:mm tt")#</td>
</tr>
<cfset TimeStart = dateAdd("n", qry.Leng, i)>
</cfloop>
</cfloop>
Этот код выше дает мне вывод, как это:
09:00 AM - 09:15 AM
09:15 AM - 09:30 AM
09:30 AM - 09:45 AM
09:45 AM - 10:00 AM
*10:00 AM - 09:15 AM
09:15 AM - 09:30 AM
09:30 AM - 09:45 AM
09:45 AM - 10:00 AM
*10:00 AM - 09:15 AM
09:15 AM - 09:30 AM
09:30 AM - 09:45 AM
09:45 AM - 10:00 AM
*10:00 AM - 09:15 AM
09:15 AM - 09:30 AM
09:30 AM - 09:45 AM
09:45 AM - 10:00 AM
*10:00 AM - 09:15 AM
09:15 AM - 09:30 AM
09:30 AM - 09:45 AM
09:45 AM - 10:00 AM
Как видите, я поставил звездочку рядом со строкой, где мой код дает мне неправильные значения. По какой-то причине мое время запуска после первого цикла выполняется один раз, начинается с момента окончания. Может кто-нибудь сказать мне, как это можно исправить?
1 ответ
Вы не можете использовать "i" в качестве индекса для внешнего и внутреннего цикла. Используйте что-то еще для внутреннего цикла (x). Например:
<cfloop from="1" to="5" index="i">
<cfloop from="#qry.S#" to="#qry.E#" index="x" step="#CreateTimeSpan(0,0,qry.Leng,0)#">
<cfset TimeEnd = dateAdd("n", Leng, i)>
<tr>
<td> #timeFormat(TimeStart, "hh:mm tt")# - #timeFormat(TimeEnd, "hh:mm tt")#</td>
</tr>
<cfset TimeStart = dateAdd("n", qry.Leng, i)>
</cfloop>
</cfloop>
Я не уверен в намерении здесь, поэтому вам, возможно, придется поменять местами некоторые из вас, я на х во внутреннем цикле, в зависимости от того, что вы ищете (например, начало-конец).
*************************** редактирует ****************
Может быть, я вижу вашу проблему (не уверен), но на основании вашего комментария ваша проблема будет в том, что вы сбросили переменную timestart. Вы должны сделать это после того, как начнется ваш первый цикл.
<cfloop> outer loop
<Cfset timestart = *starting value*>
<cfloop> inner looop
Иначе, ваш временной график будет таким, каким был ваш последний cfset - во внутреннем цикле.