Sök…


Anmärkningar

Stort tack till

Looperar genom en samling med CFML-taggar.

<!--- 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>

Looping genom en samling med 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>

Index

parametrar

Attribut Nödvändig Typ Standard Beskrivning
index Sann sträng Variabelnamn för slingans index. Standardvärde för variables .
från Sann numerisk Startvärde för indexet.
till Sann numerisk Avslutande värde för indexet.
steg falsk numerisk 1 Värde för att öka eller minska indexet per iteration.

Grundläggande indexslinga

Slutvärdet på x är 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

Öka steget till 2

Slutvärdet på x är 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

Dekrement steg för 1

Det slutliga värdet på x är 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 i en funktion

Se till att var eller local omfattar indexet i en funktion. Foo() returnerar 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 genom ström

Cfscript-funktionen cfloop har inget stöd för index som en fristående räknemekanism.

Tillstånd

Tag syntax

parametrar

Attribut Nödvändig Typ Standard Beskrivning
tillstånd Sann sträng Tillstånd som hanterar slingan. Kan inte innehålla matematiska symboler som < , > eller = . Måste använda ColdFusion-textimplementeringar som less than , lt , greater than , gt , equals eller eq .

Slutvärdet på x är 5.

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

Genererad HTML

Detta kommer också att ha en rader mellan varje rad i HTML.

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

CFSCRIPT

Före ColdFusion 8

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

ColdFusion 8 genom ström

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

ColdFusion 11 genom ström

Cfscript-funktionen cfloop har inget stöd för condition .

Genererad HTML

Lägg märke till att cfscript-utdata finns på en rad.

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

Datum eller tidsintervall

Exempel för datum eller tidsintervall.

Fråga

Tänk på tabellen dbo.state_zip , som innehåller kolumnerna city , statecode och zipcode och har över 80 000 poster.

parametrar

Attribut Nödvändig Typ Standard Beskrivning
fråga Sann sträng Variabelns namn på ett frågaobjekt.
StartRow falsk numerisk Startradens index för frågaobjektet.
EndRow falsk numerisk Slutradens index för frågaobjektet.
grupp falsk sträng Namnet på frågekolumnen som du vill gruppera poster på.

Exempelfråga

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

Tag syntax

Använda frågeobjektets geo som källa för cfloop . Eftersom tabellen dbo.state_zip har så många poster kommer HTML-genererade att ta ganska lång tid. Detta exempel visar bara de första 20 posternas HTML-värde.

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

Genererad 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>

Begränsa utgången till specifika rader

För att begränsa frågeställningens utgång till ett visst antal rader anger du startrow och endrow .

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

Gruppera output

I exempeldata listade samma tillstånd flera gånger i förhållande till de flera städerna som är associerade till varje stat. Du kan också se samma stad som listas flera gånger i förhållande till flera postnummer som är kopplade till varje stad.

Låt oss gruppera utgången efter tillstånd först. Lägg märke till den andra förekomsten av cfloop lindad runt innehållet som kommer att matas ut under det stateCode innehållet.

<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>

Genererade HTML (extrakt) från en grupperad cfloop tagg.

<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>

Slutligen, låt oss gruppera utgången efter stateCode , sedan efter city för att se alla zipCode poster per stad. Lägg märke till att den andra cfloop nu är grupperad efter city och en tredje cfloop finns för att mata ut zipCode data.

<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>

Genererade HTML (extrakt) från två grupperade cfloop taggar.

<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) men nuvarande

<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 men nuvarande

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

ColdFusion 10 men nuvarande

Med FOR IN syntaxen är x ett frågeställningsobjekt, inte radindex.

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

ColdFusion 11 men nuvarande

ColdFusion 11 gör att de flesta taggar kan skrivas som cfscript.

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

Med 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>

Lista

Tänk på denna lista:

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

Tag syntax

parametrar

Attribut Nödvändig Standard Beskrivning
lista Sann Ett listobjekt. Variabeln måste utvärderas (lindad med ##)
index Sann Det aktuella elementet i listan.
<cfoutput>
    <cfloop list="#foo#" index="x">
        <li>#x#</li>
    </cfloop>
</cfoutput>

Genererad HTML

Detta kommer också att ha en rader mellan varje rad i HTML.

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

CFSCRIPT

Före ColdFusion 8

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

ColdFusion 8 genom ström

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

ColdFusion 9 till och med ström

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

ColdFusion 11 genom ström

Cfscript-funktionen cfloop har inget stöd för list .

Genererad HTML

Lägg märke till att cfscript-utdata finns på en rad.

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

Array

Förmågan att direkt använda en array objekt med cfloop sattes i Coldfusion 8.

Tänk på denna matris;

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

Tag syntax

ColdFusion 8 genom ström

Använda attribut index av sig själv.

parametrar

Attribut Nödvändig Standard Beskrivning
array Sann Ett arrayobjekt. Variabeln måste utvärderas (lindad med ##)
index Sann Det aktuella elementet i matrisen.
<cfoutput>
    <cfloop array="#aFoo#" index="x">
        <li>#x#</li>
    </cfloop>
</cfoutput>

Genererad HTML

Detta kommer också att ha en rader mellan varje rad i HTML.

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

ColdFusion 2016 genom nuvarande

item ändrar beteendet hos cfloop per Coldfusion 2016.

Använda attribut item i stället för eller utöver index .

parametrar

Attribut Nödvändig Standard Beskrivning
array Sann Ett arrayobjekt. Variabeln måste utvärderas (lindad med ##)
Artikel Sann Det aktuella elementet i matrisen.
index falsk Det aktuella indexet för matrisen.
<cfoutput>
    <cfloop array="#aFoo#" item="x" index="y">
        <li>#x# | #y#</li>
    </cfloop>
</cfoutput>

Genererad HTML

Detta kommer också att ha en rader mellan varje rad i HTML.

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

CFSCRIPT

Före ColdFusion 8

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

ColdFusion 8 genom ström

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

ColdFusion 9 till och med ström

Med FOR IN syntaxen är x det aktuella arrayelementet, inte arrayindex.

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

ColdFusion 11 genom ström

Cfscript-funktionen cfloop har inget stöd för array .

Genererad HTML

Lägg märke till att cfscript utdata finns på en rad.

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

Fil

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

Strukturera

Tänk på denna struktur:

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

Tag syntax

parametrar

Lägg märke till användningen av attributet item istället för index .

Attribut Nödvändig Typ Standard Beskrivning
samling Sann strukturera Ett struct . Variabeln måste utvärderas (lindad med ##).
Artikel Sann sträng Den nuvarande strukturen key ,

Använda strukturfunktioner

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

Implicit Structure Syntax

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

Genererad HTML

Detta kommer också att ha en rader mellan varje rad i HTML.

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

CFSCRIPT

Med FOR IN syntaxen är x en key för strukturobjektet.

Skriv ut strukturens nycklar

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

Genererad HTML

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

Skriv ut värdet på strukturens nycklar

Använda strukturfunktioner

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

Implicit Structure Syntax

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

ColdFusion 11 genom ström

Cfscript-funktionen cfloop har inget stöd för collection .

Genererad HTML

Lägg märke till att cfscript-utdata finns på en rad.

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

Indexslinga

Använd from och to attribut för att ange hur många iterationer som ska uppstå. Den (frivilligt) step attribut kan du avgöra hur stora steg kommer att bli.

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

Villkorlig slinga

Du använder condition att ange villkoret som ska användas.

<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>

Frågeslinga

Du kan slinga över resultaten från en ColdFusion-fråga.

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

Lista loop

Du kan använda attributet (valfritt) delimiters att ange vilka tecken som ska användas som separatorer i listan.

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

File Loop

Du kan slinga över en fil.

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

COM-samling / struktureringsslingor

Du kan slinga över en struktur eller en COM-samling.

<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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow