Поиск…


замечания

Большое спасибо

Цитирование через коллекцию с использованием меток CFML.

<!--- Define collection --->
<cfset attributes = {
  "name": "Sales",
  "type": "text",
  "value": "Connection"
}>

<!--- 
  cfloop tag with attribute collection can be used to 
  loop through the elements of a structure
--->
<cfloop collection=#attributes# item="attribute">
  <cfoutput>
    Key : #attribute#, Value : #attributes[attribute]#
  </cfoutput>
</cfloop>

Цитирование через коллекцию с использованием CFSCRIPT.

<cfscript>
  /*define collection*/
  attributes = {
    "name": "Sales",
    "type": "text",
    "value": "Connection"
  };
  for(attribute in attributes){
    /* attribute variable will contain the key name of each key value pair in loop */
    WriteOutput('Key : ' & attribute & ', Value : ' & attributes[attribute] & '<br/>');
  }
</cfscript>

Индекс

параметры

атрибут необходимые Тип По умолчанию Описание
индекс правда строка Имя переменной для индекса цикла. Значение по умолчанию для области variables .
от правда числовой Начальное значение для индекса.
в правда числовой Конечное значение для индекса.
шаг ложный числовой 1 Значение, с помощью которого можно увеличить или уменьшить индекс за итерацию.

Базовая индексная петля

Конечное значение x равно 10.

<!--- Tags --->
<cfoutput>
    <cfloop index="x" from="1" to="10">
        <li>#x#</li>
    </cfloop>
</cfoutput>
<!--- cfscript --->
<cfscript>
    for (x = 1; x <= 10; x++) {
        writeOutput('<li>' & x & '</li>');
    }
</cfscript>
<!--- HTML Output --->
 - 1
 - 2
 - 3
 - 4
 - 5
 - 6
 - 7
 - 8
 - 9
 - 10

Увеличьте шаг до 2

Конечное значение x равно 11.

<!--- Tags --->
<cfoutput>
    <cfloop index="x" from="1" to="10" step="2">
        <li>#x#</li>
    </cfloop>
</cfoutput>
<!--- cfscript --->
<cfscript>
    for (x = 1; x <= 10; x += 2) {
        writeOutput('<li>' & x & '</li>');
    }
</cfscript>
<!--- HTML Output --->
 - 1
 - 3
 - 5
 - 7
 - 9

Шаг уменьшения на 1

Конечное значение x равно 0.

<!--- Tags --->
<cfoutput>
    <cfloop index="x" from="10" to="1" step="-1">
        <li>#x#</li>
    </cfloop>
</cfoutput>
<!--- cfscript --->
<cfscript>
    for (x = 10; x > 0; x--) {
        writeOutput('<li>' & x & '</li>');
    }
</cfscript>
<!--- HTML Output --->
 - 10
 - 9
 - 8
 - 7
 - 6
 - 5
 - 4
 - 3
 - 2
 - 1

CFLoop в функции

Удостоверьтесь, что в var или local scope указатель внутри функции. Foo() возвращает 11.

<!--- var scope --->
<cffunction name="foo" access="public" output="false" returntype="numeric">
    <cfset var x = 0 />
    <cfloop index="x" from="1" to="10" step="1">
        <cfset x++ />
    </cfloop>
    <cfreturn x />
</cffunction>

<!--- Local scope --->
<cffunction name="foo" access="public" output="false" returntype="numeric">
    <cfloop index="local.x" from="1" to="10" step="1">
        <cfset local.x++ />
    </cfloop>
    <cfreturn local.x />
</cffunction>

ColdFusion 11 через текущий

Функция cfscript cfloop не поддерживает index как отдельный механизм счетчика.

Состояние

Синтаксис тегов

параметры

атрибут необходимые Тип По умолчанию Описание
состояние правда строка Условие, которое управляет циклом. Не может содержать математические символы, такие как < , > или = . Должны использовать потоки текста ColdFusion, такие как less than , lt , greater than , gt , equals или eq .

Конечное значение x равно 5.

<cfset x = 0 />
<cfoutput>
    <cfloop condition="x LT 5">
        <cfset x++ />
        <li>#x#</li>
    </cfloop>
</cfoutput>

Сгенерированный HTML

Это также будет иметь разрыв строки между каждой строкой HTML.

<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>

CFScript

Предыдущая в ColdFusion 8

<cfscript>
x = 0;
while (x LT 5) {
    x = x + 1;
    writeOutput('<li>' & x & '</li>');
}
</cfscript>

ColdFusion 8 через текущий

<cfscript>
x = 0;
while (x LT 5) {
    x = x++;
    writeOutput('<li>' & x & '</li>');
}
</cfscript>

ColdFusion 11 через текущий

Функция cfscript cfloop не поддерживает condition .

Сгенерированный HTML

Обратите внимание, что вывод cfscript находится на одной строке.

<li>one</li><li>two</li><li>three</li><li>four</li>

Дата или временной диапазон

Пример для даты или времени.

запрос

Рассмотрим таблицу dbo.state_zip , которая содержит столбцы city , statecode и zipcode и имеет более 80 000 записей.

параметры

атрибут необходимые Тип По умолчанию Описание
запрос правда строка Имя переменной объекта запроса.
StartRow ложный числовой Индекс начальной строки объекта запроса.
EndRow ложный числовой Индекс конечной строки объекта запроса.
группа ложный строка Имя столбца запроса для группировки записей.

Пример запроса

<cfquery name="geo" datasource="reotrans-dev">
    SELECT city, stateCode, zipCode
    FROM dbo.state_zip
</cfquery>

Синтаксис тегов

Использование объекта запроса geo в качестве источника для cfloop . Так как таблица dbo.state_zip имеет так много записей, созданный HTML займет довольно много времени. В этом примере показаны только первые 20 записей HTML.

<cfoutput>
    <ul>
    <cfloop query="geo">
        <!--- Scope the column names with the query name. --->
        <li>#geo.city# | #geo.stateCode# | #geo.zipCode#</li>
    </cfloop>
    </ul>
</cfoutput>

Сгенерированный HTML

<ul>
    <li>100 PALMS | CA | 92274</li>
    <li>1000 PALMS | CA | 92276</li>
    <li>12 MILE | IN | 46988</li>
    <li>1ST NATIONAL BANK OF OMAHA | NE | 68197</li>
    <li>29 PALMS | CA | 92277</li>
    <li>29 PALMS | CA | 92278</li>
    <li>3 STATE FARM PLAZA | IL | 61710</li>
    <li>3 STATE FARM PLAZA | IL | 61791</li>
    <li>30TH STREET | PA | 19104</li>
    <li>3M CORP | MN | 55144</li>
    <li>65TH INFANTRY | PR | 00923</li>
    <li>65TH INFANTRY | PR | 00924</li>
    <li>65TH INFANTRY | PR | 00929</li>
    <li>65TH INFANTRY | PR | 00936</li>
    <li>7 CORNERS | VA | 22044</li>
    <li>88 | KY | 42130</li>
    <li>9 MILE POINT | LA | 70094</li>
    <li>A A R P INS | PA | 19187</li>    
    <li>A A R P PHARMACY | CT | 06167</li>
    <li>A H MCCOY FEDERAL BLDG | MS | 39269</li>
</ul>

Ограничение вывода на определенные строки

Чтобы ограничить вывод запроса определенным диапазоном строк, укажите startrow и endrow .

<cfloop query="geo" startrow="100" endrow="150">
    <li>#geo.city# | #geo.stateCode# | #geo.zipCode#</li>
</cfloop>

Группировка вывода

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

Сначала сгруппируем вывод по состоянию. Обратите внимание на второй экземпляр cfloop обернутый вокруг содержимого, которое будет выводиться в соответствии с группированным контентом stateCode .

<cfoutput>
    <ul>
    <cfloop query="geo" group="stateCode">
        <!--- Scope the column names with the query name. --->
        <li>#geo.stateCode#
            <ul>
                <cfloop>
                    <li>#geo.city# | #geo.zipCode#</li>
                </cfloop>
            </ul>
        </li>
    </cfloop>
    </ul>
</cfoutput>

Сгенерированный HTML (извлечение) из одного cfloop тега cfloop .

<ul>
    <li>AK
        <ul>
            <li>KONGIGANAK | 99545</li>
            <li>ADAK | 99546</li>
            <li>ATKA | 99547</li>
            <!-- etc. -->
        </ul>
    </li>
    <li>AL
        <ul>
            <li>ALEX CITY | 35010</li>
            <li>ALEXANDER CITY | 35010</li>
            <li>ALEX CITY | 35011</li>
            <!-- etc. -->
        </ul>
    </li>
    <!-- etc. -->
</ul>

Наконец, давайте сгруппируем вывод по stateCode , затем по city , чтобы просмотреть все записи zipCode каждого города. Обратите внимание, что второй cfloop теперь сгруппирован по city и существует 3-й cfloop для вывода данных zipCode .

<cfoutput>
    <ul>
    <cfloop query="geo" group="stateCode">
        <li>#geo.stateCode#
            <ul>
            <cfloop group="city">
                <li>#geo.city#
                    <ul>
                        <cfloop>
                            <li>#geo.zipCode#</li>
                        </cfloop>
                    </ul>
                </li>
            </cfloop>
            </ul>
        </li>
    </cfloop>
    </ul>
</cfoutput>

Сгенерированный HTML (извлечение) из двух сгруппированных тегов cfloop .

<ul>
    <li>AK
        <ul>
            <li>ADAK
                <ul>
                    <li>99546</li>
                    <li>99571</li>
                </ul>
            </li>
            <li>AKHIOK
                <ul>
                    <li>99615</li>
                </ul>
            </li>
            <!--- etc. --->
            <li>BARROW
                <ul>
                    <li>99723</li>
                    <li>99759</li>
                    <li>99789</li>
                    <li>99791</li>
                </ul>
            </li>
            <!--- etc. --->
        </ul>
    </li>
    <!--- stateCodes etc. --->
</ul>

CFScript

ColdFusion 6 (MX), хотя ток

<cfscript>
    for (x = 1; x LTE geo.recordcount; x = x + 1) {
        writeOutput( '<li>' & geo.city[x] & ' | ' & 
            geo.stateCode[x] & ' | ' & geo.zipCode[x] & '</li>');
    }
</cfscript>

ColdFusion 8, хотя текущий

<cfscript>
    for (x = 1; x <= geo.recordcount; x++) {
        writeOutput( '<li>' & geo.city[x] & ' | ' & 
            geo.stateCode[x] & ' | ' & geo.zipCode[x] & '</li>');
    }
</cfscript>

ColdFusion 10, хотя текущий

С синтаксисом FOR IN x является объектом строки запроса, а не индексом строки.

<cfscript>
    for (x in geo) {
        writeOutput( '<li>' & x.city & ' | ' & 
            x.stateCode & ' | ' & x.zipCode & '</li>');
    }
</cfscript>

ColdFusion 11, хотя текущий

ColdFusion 11 позволяет записывать большинство тегов как cfscript.

<cfscript>
    cfloop(query: geo, startrow: 1, endrow: 2) {
        writeOutput( '<li>' & geo.city & ' | ' & 
            geo.stateCode & ' | ' & geo.zipCode & '</li>');
    }
</cfscript>

С group .

<cfscript>
    cfloop(query: geo, group: 'city') {
        writeOutput( '<li>' & geo.city & '<ul>');
        cfloop() { // no arguments, just as in the tag syntax.
            writeOutput('<li>'  & geo.zipCode & '</li>');
        }
        writeOutput('</ul></li>');
    }
</cfscript>

Список

Рассмотрим этот список:

<cfset foo = "one,two,three,four" />

Синтаксис тегов

параметры

атрибут необходимые По умолчанию Описание
список правда Объект списка. Переменная должна быть оценена (завернута с ##)
индекс правда Текущий элемент списка.
<cfoutput>
    <cfloop list="#foo#" index="x">
        <li>#x#</li>
    </cfloop>
</cfoutput>

Сгенерированный HTML

Это также будет иметь разрыв строки между каждой строкой HTML.

<li>one</li>
<li>two</li>
<li>three</li>
<li>four</li>

CFScript

Предыдущая в ColdFusion 8

<cfscript>
    for (x = 1; x LTE listLen(foo); x = x + 1) {
        writeOutput("<li>" & listGetAt(foo, x) & "</li>");
    }
</cfscript>

ColdFusion 8 через текущий

<cfscript>
    for (x = 1; x <= listLen(foo); x++) {
        writeOutput("<li>" & listGetAt(foo, x) & "</li>");
    }
</cfscript>

ColdFusion 9 через текущий

<cfscript>
    for (x in foo) {
        writeOutput("<li>" & x & "</li>");
    }
</cfscript>

ColdFusion 11 через текущий

Функция cfscript cfloop не поддерживает list .

Сгенерированный HTML

Обратите внимание, что вывод cfscript находится на одной строке.

<li>one</li><li>two</li><li>three</li><li>four</li>

массив

В ColdFusion 8 была добавлена ​​возможность прямого использования объекта array с помощью cfloop .

Рассмотрим этот массив;

<cfset aFoo = [
    "one"
    , "two"
    , "three"
    , "four"
] />

Синтаксис тегов

ColdFusion 8 через текущий

Использование index атрибута.

параметры

атрибут необходимые По умолчанию Описание
массив правда Объект массива. Переменная должна быть оценена (завернута с ##)
индекс правда Текущий элемент массива.
<cfoutput>
    <cfloop array="#aFoo#" index="x">
        <li>#x#</li>
    </cfloop>
</cfoutput>

Сгенерированный HTML

Это также будет иметь разрыв строки между каждой строкой HTML.

<li>one</li>
<li>two</li>
<li>three</li>
<li>four</li>

ColdFusion 2016 через текущий

Атрибут item изменяет поведение cfloop по состоянию на Coldfusion 2016 года.

Использование item атрибута вместо или в дополнение к index .

параметры

атрибут необходимые По умолчанию Описание
массив правда Объект массива. Переменная должна быть оценена (завернута с ##)
вещь правда Текущий элемент массива.
индекс ложный Текущий индекс массива.
<cfoutput>
    <cfloop array="#aFoo#" item="x" index="y">
        <li>#x# | #y#</li>
    </cfloop>
</cfoutput>

Сгенерированный HTML

Это также будет иметь разрыв строки между каждой строкой HTML.

<li>one | 1</li>
<li>two | 2</li>
<li>three | 3</li>
<li>four | 4</li>

CFScript

Предыдущая в ColdFusion 8

<cfscript>
for (i = 1; x LTE arrayLen(aFoo); i = i + 1) {
    writeOutput("<li>" & aFoo[i] & "</li>");
}
</cfscript>

ColdFusion 8 через текущий

<cfscript>
for (i = 1; i <= arrayLen(aFoo); i = i++) {
    writeOutput("<li>" & aFoo[i] & "</li>");
}
</cfscript>

ColdFusion 9 через текущий

С синтаксисом FOR IN x является текущим элементом массива, а не индексом массива.

<cfscript>
for (x in aFoo) {
    writeOutput("<li>" & x & "</li>");
}
</cfscript>

ColdFusion 11 через текущий

Функция cfscript cfloop не поддерживает array .

Сгенерированный HTML

Обратите внимание, что вывод cfscript находится на одной строке.

<li>one</li><li>two</li><li>three</li><li>four</li>

файл

<cfloop list="#myFile#" index="FileItem" delimiters="#chr(10)##chr(13)#">
  <cfoutput>
   #FileItem#<br />
 </cfoutput>
</cfloop>

Состав

Рассмотрим эту структуру:

<cfset stFoo = {
    a = "one"
    , b = "two"
    , c = "three"
    , d = "foue"
} />

Синтаксис тегов

параметры

Обратите внимание на использование атрибута item вместо index .

атрибут необходимые Тип По умолчанию Описание
коллекция правда состав Объект struct . Переменная должна быть оценена (завернута с ##).
вещь правда строка Текущий key элемент структуры,

Использование структурных функций

<cfoutput>
    <cfloop collection="#stFoo#" item="x">
        <li>#structFind(stFoo, x)#</li>
    </cfloop>
</cfoutput>

Синтаксис неявной структуры

<cfoutput>
    <cfloop collection="#stFoo#" item="x">
        <li>#stFoo[x]#</li>
    </cfloop>
</cfoutput>

Сгенерированный HTML

Это также будет иметь разрыв строки между каждой строкой HTML.

<li>one</li>
<li>two</li>
<li>three</li>
<li>four</li>

CFScript

С синтаксисом FOR IN x является key объекта структуры.

Вывести ключи структуры

<cfscript>
    for (x in stFoo) {
        writeOutput("<li>" & x & "</li>");
    }
</cfscript>

Сгенерированный HTML

<li>A</li><li>B</li><li>C</li><li>D</li>

Вывести значение ключей структуры

Использование структурных функций

<cfscript>
    for (x in stFoo) {
        writeOutput("<li>" & structFind(stFoo, x) & "</li>");
    }
</cfscript>

Синтаксис неявной структуры

<cfscript>
    for (x in stFoo) {
        writeOutput("<li>" & stFoo[x] & "</li>");
    }
</cfscript>

ColdFusion 11 через текущий

Функция cfscript cfloop не поддерживает collection .

Сгенерированный HTML

Обратите внимание, что вывод cfscript находится на одной строке.

<li>one</li><li>two</li><li>three</li><li>four</li>

Индексная петля

Используйте атрибуты from и to чтобы указать, сколько итераций должно произойти. Атрибут (необязательный) step позволяет вам определить, насколько велики будут приращения.

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

Условный цикл

Вы используете атрибут condition чтобы указать условие для использования.

<cfset myVar=false>
<cfloop condition="myVar eq false">
    <cfoutput>
    myVar = <b>#myVar#</b>  (still in loop)<br />
 </cfoutput>
    <cfif RandRange(1,10) eq 10>
        <cfset myVar="true">
    </cfif>
</cfloop>
<cfoutput>
    myVar = <b>#myVar#</b> (loop has finished)
</cfoutput>

Query Loop

Вы можете запрограммировать результаты запроса ColdFusion.

<cfquery name="getMovies" datasource="Entertainment">
    select top 4 movieName
    from Movies
</cfquery>
<cfloop query="getMovies">
    #movieName#
</cfloop>

Цикл списка

Вы можете использовать (необязательный) атрибут delimiters чтобы указать, какие символы используются в качестве разделителей в списке.

<cfloop list="ColdFusion,HTML;XML" index="ListItem" delimiters=",;">
    <cfoutput>
        #ListItem#<br />
    </cfoutput>
</cfloop>

File Loop

Вы можете перебрать файл.

<cfloop file="#myFile#" index="line">
    <cfoutput>
        #line#<br />
    </cfoutput>
</cfloop>

Коды сборки COM / структуры

Вы можете перебрать структуру или коллекцию COM.

<cfset myBooks = StructNew()>
<cfset myVariable = StructInsert(myBooks,"ColdFusion","ColdFusion MX Bible")>
<cfset myVariable = StructInsert(myBooks,"HTML","HTML Visual QuickStart")>
<cfset myVariable = StructInsert(myBooks,"XML","Inside XML")>
<cfloop collection="#myBooks#" item="subject">
    <cfoutput>
        <b>#subject#:</b> #StructFind(myBooks,subject)#<br />
    </cfoutput>
</cfloop>


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow