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 - во внутреннем цикле.

Другие вопросы по тегам