Zoeken…


Opmerkingen

Veel dank aan

Een collectie doorlopen met behulp van CFML-tags.

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

Een collectie doorlopen met 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>

Inhoudsopgave

parameters

Attribuut Verplicht Type Standaard Beschrijving
inhoudsopgave waar draad Variabelenaam voor de index van de lus. Standaard ingesteld op variables .
van waar numerieke Startwaarde voor de index.
naar waar numerieke Eindwaarde voor de index.
stap vals numerieke 1 Waarde waarmee de index per iteratie kan worden verhoogd of verlaagd.

Basic index loop

Eindwaarde van x is 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

Verhoog stap naar 2

Eindwaarde van x is 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

Daling stap voor 1

Eindwaarde van x is 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 in een functie

Zorg ervoor dat u de index binnen een functie var of local scant. Foo() geeft 11 terug.

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

De cfscript-functie cfloop geen ondersteuning voor index als een zelfstandig cfloop .

Staat

Tag-syntaxis

parameters

Attribuut Verplicht Type Standaard Beschrijving
staat waar draad Conditie die de lus beheert. Kan geen wiskundige symbolen bevatten zoals < , > of = . Moet ColdFusion-tekstimplementaties gebruiken zoals less than , lt , greater than , gt , equals of eq .

Eindwaarde van x is 5.

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

Gegenereerde HTML

Dit heeft ook een regeleinde tussen elke HTML-regel.

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

CFScript

Voorafgaand aan ColdFusion 8

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

ColdFusion 8 door stroom

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

ColdFusion 11 door stroom

De cfscript-functie cfloop geen ondersteuning voor de condition .

Gegenereerde HTML

Merk op dat de cfscript-uitvoer zich allemaal op één regel bevindt.

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

Datum of tijdsbereik

Voorbeeld voor datum of tijdsbereik.

vraag

Beschouw de tabel dbo.state_zip , die de kolommen city , statecode en zipcode en meer dan 80.000 records heeft.

parameters

Attribuut Verplicht Type Standaard Beschrijving
vraag waar draad De variabelenaam van een queryobject.
startrow vals numerieke De startrijindex van het queryobject.
eindRij vals numerieke De eindrij-index van het queryobject.
groep vals draad De naam van de querykolom waarop records moeten worden gegroepeerd.

Voorbeeldvraag

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

Tag-syntaxis

Het cfloop geo als bron voor cfloop . Omdat de tabel dbo.state_zip zoveel records heeft, zal de gegenereerde HTML behoorlijk wat tijd kosten. Dit voorbeeld toont alleen de waarde van de eerste 20 records 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>

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

De uitvoer beperken tot specifieke rijen

Als u de uitvoer van de query wilt beperken tot een specifiek bereik van rijen, geeft u startrow en endrow .

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

Groeperen van output

In de voorbeeldgegevens wordt dezelfde staat meerdere keren vermeld in relatie tot de meerdere steden die aan elke staat zijn gekoppeld. Je kunt ook dezelfde stad meerdere keren zien in relatie tot de meerdere postcode die aan elke stad zijn gekoppeld.

Laten we eerst de uitvoer groeperen op status. Let op het tweede exemplaar van cfloop rond de inhoud die wordt uitgevoerd onder de inhoud van de stateCode groep.

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

Gegenereerde HTML (extract) van één gegroepeerde cfloop tag.

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

Laten we tot slot de uitvoer stateCode op stateCode en vervolgens op city om alle zipCode vermeldingen per stad te bekijken. Merk op dat de 2e cfloop nu per city is gegroepeerd en er een 3e cfloop bestaat om de zipCode gegevens uit te voeren.

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

Gegenereerde HTML (extract) van twee gegroepeerde cfloop tags.

<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) hoewel actueel

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

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

ColdFusion 10 hoewel actueel

Met de FOR IN syntaxis is x een queryrijobject, niet de rijindex.

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

ColdFusion 11 hoewel actueel

Met ColdFusion 11 kunnen de meeste tags worden geschreven als cfscript.

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

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

Lijst

Beschouw deze lijst:

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

Tag-syntaxis

parameters

Attribuut Verplicht Standaard Beschrijving
lijst waar Een lijstobject. De variabele moet worden geëvalueerd (omwikkeld met ##)
inhoudsopgave waar Het huidige element van de lijst.
<cfoutput>
    <cfloop list="#foo#" index="x">
        <li>#x#</li>
    </cfloop>
</cfoutput>

Gegenereerde HTML

Dit heeft ook een regeleinde tussen elke HTML-regel.

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

CFScript

Voorafgaand aan ColdFusion 8

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

ColdFusion 8 door stroom

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

ColdFusion 9 door stroom

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

ColdFusion 11 door stroom

De cfscript-functie cfloop geen ondersteuning voor de list .

Gegenereerde HTML

Merk op dat de cfscript-uitvoer zich allemaal op één regel bevindt.

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

reeks

De mogelijkheid om rechtstreeks een array object met cfloop is toegevoegd in ColdFusion 8.

Overweeg deze reeks;

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

Tag-syntaxis

ColdFusion 8 door stroom

Met behulp van het attribuut index zelf.

parameters

Attribuut Verplicht Standaard Beschrijving
rangschikking waar Een matrixobject. De variabele moet worden geëvalueerd (omwikkeld met ##)
inhoudsopgave waar Het huidige element van de array.
<cfoutput>
    <cfloop array="#aFoo#" index="x">
        <li>#x#</li>
    </cfloop>
</cfoutput>

Gegenereerde HTML

Dit heeft ook een regeleinde tussen elke HTML-regel.

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

ColdFusion 2016 via stroom

Het attribuut item verandert het gedrag van cfloop als van Coldfusion 2016.

Met behulp van het attribuut item in plaats van of in aanvulling op de index .

parameters

Attribuut Verplicht Standaard Beschrijving
rangschikking waar Een matrixobject. De variabele moet worden geëvalueerd (omwikkeld met ##)
item waar Het huidige element van de array.
inhoudsopgave vals De huidige index van de array.
<cfoutput>
    <cfloop array="#aFoo#" item="x" index="y">
        <li>#x# | #y#</li>
    </cfloop>
</cfoutput>

Gegenereerde HTML

Dit heeft ook een regeleinde tussen elke HTML-regel.

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

CFScript

Voorafgaand aan ColdFusion 8

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

ColdFusion 8 door stroom

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

ColdFusion 9 door stroom

Met de FOR IN syntaxis is x het huidige array-element, niet de array-index.

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

ColdFusion 11 door stroom

De cfscript-functie cfloop geen ondersteuning voor array .

Gegenereerde HTML

Merk op dat de cfscript uitvoer zich allemaal op één regel bevindt.

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

het dossier

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

Structuur

Beschouw deze structuur:

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

Tag-syntaxis

parameters

Let op het gebruik van het attribuut item in plaats van index .

Attribuut Verplicht Type Standaard Beschrijving
verzameling waar structuur Een struct object. De variabele moet worden geëvalueerd (omwikkeld met ##).
item waar draad De huidige structuur key ,

Structuurfuncties gebruiken

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

Impliciete structuursyntaxis

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

Gegenereerde HTML

Dit heeft ook een regeleinde tussen elke HTML-regel.

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

CFScript

Met de FOR IN syntaxis is x een key van het structuurobject.

Voer de toetsen van de structuur uit

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

Gegenereerde HTML

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

Voer de waarde van de sleutels van de structuur uit

Structuurfuncties gebruiken

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

Impliciete structuursyntaxis

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

ColdFusion 11 door stroom

De cfscript-functie cfloop geen ondersteuning voor het collection .

Gegenereerde HTML

Merk op dat de cfscript-uitvoer zich allemaal op één regel bevindt.

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

Index lus

Gebruik de kenmerken from en to aan te geven hoeveel iteraties moeten voorkomen. De (optionele) step attribuut kunt u bepalen hoe groot de stappen zullen zijn.

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

Voorwaardelijke lus

U gebruikt het kenmerk condition om de te gebruiken voorwaarde op te geven.

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

U kunt de resultaten van een ColdFusion-query herhalen.

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

Lijst Loop

U kunt het kenmerk (optioneel) delimiters aan te geven welke tekens als scheidingstekens in de lijst worden gebruikt.

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

File Loop

U kunt een bestand herhalen.

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

COM-verzameling / structuurlussen

U kunt een structuur of een COM-verzameling herhalen.

<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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow