Spec-Zone.ru › ColdFusion

cfloop

В зависимости от типа цикла требуются разные элементы. Элементы, перечисленные как обязательные, могут не требоваться в зависимости от типа цикла. Формы цикла: [query] [condition] [index + from + to ] [index + list] [collection + item ]

<cfloop>

for (i = 1; i <= 10; i++) { }

  • CF2+
  • Lucee
  • BL 1.0.0+
  • См. также: arrayEach structEach listEach

    Справочник атрибутов

    index string

    Значение индекса. CFML присваивает ему значение атрибута from и увеличивает или уменьшает его на значение step, пока оно не станет равным значению атрибута to.

    from numeric

    Начальное значение индекса.

    to numeric

    Конечное значение индекса.

    step numeric

    Шаг, на который увеличивается или уменьшается значение индекса.

    condition string

    Условие, управляющее циклом.

    query query

    Запрос, управляющий циклом.

    group string

    CF 10+ и Lucee 4.5+. Столбец запроса, используемый для группировки наборов записей. Удаляет соседние строки дубликатов, если данные отсортированы. Используйте этот атрибут, если получили набор записей, отсортированный по одному или нескольким столбцам запроса.

    groupcasesensitive boolean
    По умолчанию: No

    Lucee 4.5+. Логическое значение, указывающее, учитывать ли регистр при группировке. По умолчанию задано значение NO; при группировке регистр учитывается. Если атрибут query задает объект запроса, созданный нечувствительным к регистру SQL-запросом, установите для атрибута groupCaseSensitive значение NO, чтобы сохранить набор записей без изменений.

    startrow numeric

    Первая строка запроса, включаемая в цикл.

    endrow numeric

    Последняя строка запроса, включаемая в цикл.

    list string

    Атрибут list используется с атрибутом index (или item в Lucee либо CF 2016+), чтобы выполнять цикл по списку, переменной или имени файла; содержит список

    delimiters string
    По умолчанию: ,

    Символ или символы, разделяющие элементы списка

    collection any

    Атрибут collection используется вместе с атрибутом item, обычно для выполнения цикла по структуре

    item string

    Атрибут item используется вместе с атрибутом collection, обычно для выполнения цикла по структуре или массиву. ПРИМЕЧАНИЕ: если указан атрибут item без index, item представляет ключ. В Lucee 4.5+ атрибут item можно использовать вместе с index, но учтите: в этом случае item будет представлять значение, а index — ключ!

    array array

    CF 8+ Массив.

    characters numeric

    CF 8+ Количество символов, считываемых на каждой итерации цикла из файла, указанного в атрибуте file. Если значение атрибута characters больше количества символов в файле, ColdFusion использует количество символов в файле.

    file string

    Абсолютный путь и имя текстового файла, который считывается построчно. Это удобно при чтении больших текстовых файлов, поскольку можно повторно использовать значение переменной index, содержащей текущую строку файла. По завершении цикла ColdFusion закрывает файл.

    times numeric

    Lucee 5+ Чтобы задать определенное количество итераций, можно просто использовать параметр times вместо from и to

    Совместимость

    BoxLang:

    Версия 1.0.0+ <bx:loop> в BoxLang

    Примеры
    Примеры кода с тегом cfloop

    Цикл For (синтаксис скрипта)

    Цикл общего назначения

    for (i = 1; i <= 10; i++) {
        writeOutput(i); 
    }

    Ожидаемый результат: 12345678910

    Цикл For с использованием тега CFLoop

    Цикл общего назначения

    <cfloop index="i" from="1" to="10">
        <cfoutput>#i#</cfoutput>
    </cfloop>

    Ожидаемый результат: 1 2 3 4 5 6 7 8 9 10

    Цикл по массиву (синтаксис скрипта)

    Цикл по массиву

    myArray = ["a", "b", "c"];
    // For Loop By index for CF9.0.0 and lower 
    for (i = 1; i <= arrayLen(myArray); i++) {
        writeOutput(myArray[i]);
    }
    // By For In CF9.0.1+ 
    for (currentIndex in myArray) {
        writeOutput(currentIndex);
    }
    // By arrayEach() member function CF11+
    myArray.each(function(element, index) {
        writeOutput(element & " : " & index);
    });
    // loop with index Lucee5+
    loop collection=cars index="i" value="value" {
        writeOutput(i & " : " & value);
    }

    CFLoop по массиву

    Цикл по массиву

    <cfset myArray = ["a", "b", "c"]> 
     <!--- By index ---> 
     <cfloop index="i" from="1" to="#arrayLen(myArray)#"> 
     <cfoutput>#myArray[i]#</cfoutput> 
     </cfloop> 
     <!--- By array ---> 
     <cfloop index="currentIndex" item="currentItem" array="#myArray#"> 
     <cfoutput>#currentIndex#</cfoutput> 
     
     <cfoutput>#currentItem#</cfoutput> 
     </cfloop>

    Цикл по структуре (синтаксис скрипта)

    Цикл по структуре

    myStruct = {name: "Tony", state: "Florida"}; 
     // By struct 
     for (currentKey in myStruct) { 
     writeOutput("<li>#currentKey# : #myStruct[currentKey]#</li>"); 
     } 
     // By structEach() 
     myStruct.each(function(key, value) { 
     writeOutput("<li>#key# : #value#</li>"); 
     }); 
     // loop with index Lucee5+
    loop collection=myStruct key="key" value="value" {
        writeOutput(key & " : " & value);
    }

    CFLoop по структуре

    Цикл по структуре с использованием аргументов collection и item тега cfloop.

    <!--- Define our struct ---> 
     <cfset myStruct = {name: "Tony", state: "Florida"}> 
     <!--- By struct ---> 
     <cfloop item="currentKey" collection="#myStruct#"> 
     <cfoutput><li>#currentKey# : #myStruct[currentKey]#</li></cfoutput> 
     </cfloop>

    CFLoop по структуре

    Lucee 4.5+ Цикл по структуре с использованием аргументов collection, index и item тега cfloop.

    <!--- Define our struct --->
    <cfset myStruct = {name: "Tony", state: "Florida"}>
    <!--- By struct --->
    <cfloop item="currentItem" collection="#myStruct#" index="currentKey">
    
    <cfoutput><li>#currentKey# : #currentItem#</li></cfoutput>
    </cfloop>

    Цикл по списку (синтаксис скрипта)

    Цикл по списку

    // Define our list 
     myList = "a, b, c"; 
     // By array 
     for (item in listToArray(myList, ",")) { 
     writeOutput(item); 
     } 
     // By listEach() 
     myList.each(function(element, index) { 
     writeOutput(element & " : " & index); 
     }, ",");

    CFLoop по списку

    Цикл по списку

    <!--- Define our list ---> 
     <cfset myList = "a, b, c"> 
     <!--- By list ---> 
     <cfloop index="item" list="#myList#"> 
     <cfoutput>#item#</cfoutput> 
     </cfloop> 
     <!--- By array ---> 
     <cfloop index="currentIndex" array="#listToArray(myList, ",")#"> 
     <cfoutput>#currentIndex#</cfoutput> 
     </cfloop>

    Цикл по запросу (синтаксис скрипта)

    Цикл по запросу

    // Define our query 
     platform = ["Adobe ColdFusion", "Railo", "Lucee"]; 
     myQuery = queryNew(" "); 
     queryAddColumn(myQuery, "platform", "CF_SQL_VARCHAR", platform); 
     // By row index 
     for (i = 1; i <= myQuery.recordCount; i++) { 
     writeOutput("<li>#myQuery["platform"][i]#</li>"); 
     } 
     // By query 
     for (row in myQuery) { 
     writeOutput("<li>#row.platform#</li>"); 
     }

    Цикл по запросу с группировкой (синтаксис скрипта)

    Цикл по запросу с группировкой

    q = queryNew("pk,fk,data", "integer,integer,varchar",[ 
     [1, 10, "aa"], 
     [2, 20, "bb"], 
     [3, 20, "cc"], 
     [4, 30, "dd"], 
     [5, 30, "ee"], 
     [6, 30, "ff"] 
    ]); 
    cfloop(query=q, group="fk"){ 
        writeOutput("<strong>#fk#</strong><br />"); 
        cfloop(){ 
            writeOutput("&emsp;#pk#:#data#<br />"); 
        } 
        writeOutput("<hr>"); 
    }

    CFLoop по запросу

    Цикл по запросу

    <!--- Define our query ---> 
     <cfset platform = ["Adobe ColdFusion", "Railo", "Lucee"]> 
     <cfset myQuery = queryNew(" ")> 
     <cfset queryAddColumn(myQuery, "platform", "CF_SQL_VARCHAR", platform)> 
     <!--- By row index ---> 
     <cfloop index="i" from="1" to="#myQuery.recordCount#"> 
     <cfoutput><li>#myQuery["platform"][i]#</li></cfoutput> 
     </cfloop> 
     <!--- By group ---> 
     <cfloop query="myQuery" group="platform"> 
     <cfoutput><li>#platform#</li></cfoutput> 
     </cfloop>

    Цикл While (синтаксис скрипта)

    Цикл с предусловием. Эта форма цикла проверяет одно условие в начале каждой итерации и продолжает выполнение, пока условие истинно.

    while (condition) { 
      // statements 
    }

    Цикл Do While (синтаксис скрипта)

    Цикл с постусловием. Эта форма цикла проверяет одно условие в начале каждой итерации и продолжает выполнение, пока условие истинно.

    do { 
     // statements 
    } while(condition);

    Цикл по файлу (синтаксис скрипта)

    Цикл по файлу. По 16 символов за раз.

    filePath = getCurrentTemplatePath(); 
     cfloop(file=filePath, index="chars", characters=16, charset="UTF-8"){ 
     writeOutput(chars); // outputs the contents of this file 
     }

    Цикл по дате и времени (синтаксис скрипта)

    Цикл по диапазону дат и времени (обходной способ)

    from = now(); 
     to   = dateAdd("d", 7, from); 
     for(date=from; dateCompare(date, to, "d") <= 0; date = dateAdd("d", 1, date)){ 
     writeOutput(dateTimeFormat(date, "yyyy-mm-dd HH:nn:sstt") & "<br>"); 
     }

    © 2012–present Foundeo, Inc. and the CFDocs contributors.
    Licensed under the MIT License.
    ColdFusion is a trademark of Adobe Systems Incorporated.
    https://cfdocs.org/cfloop

    Spec-Zone.ru

    Настройки Оффлайн Что нового Помощь О нас
    Spec-Zone .ru
    спецификации, руководства, описания, API