Suche…


Bemerkungen

Vielen Dank an

Durchlaufen einer Sammlung mithilfe von 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>

Durchlaufen einer Sammlung mit 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

Parameter

Attribut Erforderlich Art Standard Beschreibung
Index wahr Schnur Variablenname für den Index der Schleife. Voreinstellung für den variables .
von wahr numerisch Startwert für den Index.
zu wahr numerisch Endwert für den Index.
Schritt falsch numerisch 1 Wert, um den der Index pro Iteration erhöht oder verringert werden soll.

Grundlegende Indexschleife

Der Endwert von x ist 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

Erhöhen Sie den Schritt auf 2

Der Endwert von x ist 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

Dekrementieren Sie Schritt um 1

Der Endwert von x ist 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 einer Funktion

Stellen Sie sicher, dass Sie den Index innerhalb einer Funktion var oder local festlegen. Foo() gibt 11 zurück.

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

Die cfscript-Funktion cfloop unterstützt index als eigenständigen cfloop .

Bedingung

Tag-Syntax

Parameter

Attribut Erforderlich Art Standard Beschreibung
Bedingung wahr Schnur Bedingung, die die Schleife verwaltet. Kann keine mathematischen Symbole wie < , > oder = . Muss Coldfusion Text Implementierungen wie verwenden less than , lt , greater than , gt , equals oder eq .

Der Endwert von x ist 5.

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

Generiertes HTML

Dies hat auch einen Zeilenumbruch zwischen jeder HTML-Zeile.

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

CFScript

Zurück zu ColdFusion 8

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

ColdFusion 8 durch Strom

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

ColdFusion 11 durch Strom

Die cfscript-Funktion cfloop unterstützt keine condition .

Generiertes HTML

Beachten Sie, dass sich die Ausgabe von cfscript in einer Zeile befindet.

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

Datum oder Zeitbereich

Beispiel für Datum oder Zeitbereich.

Abfrage

Betrachten Sie die Tabelle dbo.state_zip , die die Spalten city , statecode und zipcode und über 80.000 Datensätze enthält.

Parameter

Attribut Erforderlich Art Standard Beschreibung
Abfrage wahr Schnur Der Variablenname eines Abfrageobjekts.
startrow falsch numerisch Der Anfangszeilenindex des Abfrageobjekts.
endrow falsch numerisch Der Endzeilenindex des Abfrageobjekts.
Gruppe falsch Schnur Der Name der Abfragespalte, nach der Datensätze gruppiert werden sollen.

Beispielabfrage

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

Tag-Syntax

Verwenden des Abfrageobjekts geo als Quelle für cfloop . Da die Tabelle dbo.state_zip so viele Datensätze enthält, dbo.state_zip der erzeugte HTML- dbo.state_zip einige Zeit. In diesem Beispiel wird nur der HTML-Wert der ersten 20 Datensätze angezeigt.

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

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

Ausgabe auf bestimmte Zeilen beschränken

Um die Ausgabe der Abfrage auf einen bestimmten startrow endrow , geben Sie startrow und endrow .

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

Ausgabe gruppieren

In den Beispieldaten wurde derselbe Bundesstaat mehrfach in Bezug auf die mehreren Städte aufgelistet, die jedem Bundesstaat zugeordnet sind. Sie können dieselbe Stadt auch mehrfach in Bezug auf die mit jeder Stadt verknüpften Postleitzahlen auflisten.

Lassen Sie uns zuerst die Ausgabe nach Zustand gruppieren. Beachten Sie die zweite Instanz von cfloop die um den Inhalt gewickelt ist, der unter stateCode gruppiertem Inhalt stateCode wird.

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

Generiertes HTML (Auszug) aus einem gruppierten 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>

Lassen Sie uns zum Schluss die Ausgabe nach stateCode und dann nach city stateCode , um alle zipCode Einträge pro Stadt zipCode . Beachten Sie, dass der 2. cfloop jetzt nach city gruppiert ist und ein 3. cfloop vorhanden ist, um die zipCode Daten 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>

Generiertes HTML (Auszug) aus zwei gruppierten 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) ist aktuell

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

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

ColdFusion 10 obwohl aktuell

Bei der FOR IN Syntax ist x ein Abfragezeilenobjekt, nicht der Zeilenindex.

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

ColdFusion 11 obwohl aktuell

In ColdFusion 11 können die meisten Tags als cfscript geschrieben werden.

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

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

Liste

Betrachten Sie diese Liste:

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

Tag-Syntax

Parameter

Attribut Erforderlich Standard Beschreibung
Liste wahr Ein Listenobjekt. Die Variable muss ausgewertet werden (mit ## umschlossen)
Index wahr Das aktuelle Element der Liste.
<cfoutput>
    <cfloop list="#foo#" index="x">
        <li>#x#</li>
    </cfloop>
</cfoutput>

Generiertes HTML

Dies hat auch einen Zeilenumbruch zwischen jeder HTML-Zeile.

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

CFScript

Zurück zu ColdFusion 8

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

ColdFusion 8 durch Strom

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

ColdFusion 9 durch Strom

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

ColdFusion 11 durch Strom

Die cfscript-Funktion cfloop unterstützt keine list .

Generiertes HTML

Beachten Sie, dass sich die Ausgabe von cfscript in einer Zeile befindet.

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

Array

Die Möglichkeit, ein array Objekt direkt mit cfloop wurde in ColdFusion 8 hinzugefügt.

Betrachten Sie dieses Array.

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

Tag-Syntax

ColdFusion 8 durch Strom

Unter Verwendung des Attributs index von selbst aus .

Parameter

Attribut Erforderlich Standard Beschreibung
Array wahr Ein Array-Objekt Die Variable muss ausgewertet werden (mit ## umschlossen)
Index wahr Das aktuelle Element des Arrays.
<cfoutput>
    <cfloop array="#aFoo#" index="x">
        <li>#x#</li>
    </cfloop>
</cfoutput>

Generiertes HTML

Dies hat auch einen Zeilenumbruch zwischen jeder HTML-Zeile.

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

ColdFusion 2016 durch Strom

Das Attribut item ändert das Verhalten von cfloop ab Coldfusion 2016.

Mit dem Attribut item anstelle oder zusätzlich zu index .

Parameter

Attribut Erforderlich Standard Beschreibung
Array wahr Ein Array-Objekt Die Variable muss ausgewertet werden (mit ## umschlossen)
Artikel wahr Das aktuelle Element des Arrays.
Index falsch Der aktuelle Index des Arrays.
<cfoutput>
    <cfloop array="#aFoo#" item="x" index="y">
        <li>#x# | #y#</li>
    </cfloop>
</cfoutput>

Generiertes HTML

Dies hat auch einen Zeilenumbruch zwischen jeder HTML-Zeile.

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

CFScript

Zurück zu ColdFusion 8

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

ColdFusion 8 durch Strom

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

ColdFusion 9 durch Strom

Bei der FOR IN Syntax ist x das aktuelle Array-Element, nicht der Array-Index.

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

ColdFusion 11 durch Strom

Die cfscript-Funktion cfloop unterstützt array .

Generiertes HTML

Beachten Sie, dass sich die Ausgabe von cfscript in einer Zeile befindet.

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

Datei

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

Struktur

Betrachten Sie diese Struktur:

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

Tag-Syntax

Parameter

Beachten Sie die Verwendung des Attributs item anstelle von index .

Attribut Erforderlich Art Standard Beschreibung
Sammlung wahr Struktur Ein struct . Die Variable muss ausgewertet werden (mit ## umschlossen).
Artikel wahr Schnur Die derzeitige Struktur key ,

Strukturfunktionen verwenden

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

Implizite Struktursyntax

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

Generiertes HTML

Dies hat auch einen Zeilenumbruch zwischen jeder HTML-Zeile.

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

CFScript

Bei der FOR IN Syntax ist x ein key des Strukturobjekts.

Geben Sie die Schlüssel der Struktur aus

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

Generiertes HTML

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

Geben Sie den Wert der Schlüssel der Struktur aus

Strukturfunktionen verwenden

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

Implizite Struktursyntax

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

ColdFusion 11 durch Strom

Die cfscript-Funktion cfloop unterstützt keine collection .

Generiertes HTML

Beachten Sie, dass sich die Ausgabe von cfscript in einer Zeile befindet.

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

Index-Schleife

Verwenden Sie die Attribute from und to , um anzugeben, wie viele Iterationen ausgeführt werden sollen. Mit dem (optionalen) step Attribut können Sie bestimmen, wie groß die Inkremente sein werden.

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

Bedingte Schleife

Sie verwenden das condition , um die zu verwendende condition anzugeben.

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

Abfrageschleife

Sie können die Ergebnisse einer ColdFusion-Abfrage durchlaufen.

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

Liste Schleife

Mit dem (optionalen) delimiters Attribut können Sie angeben, welche Zeichen als Trennzeichen in der Liste verwendet werden.

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

Datei-Schleife

Sie können eine Datei überlaufen.

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

COM Collection / Strukturschleifen

Sie können eine Struktur- oder COM-Sammlung durchlaufen.

<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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow