coldfusion
CFLOOP कैसे करें
खोज…
टिप्पणियों
के लिए बड़ा धन्यवाद
- पीट फ्रिटैग अपनी सीएफस्क्रिप्ट धोखा शीट के लिए
- CF 11 के लिए एडम कैमरन : CFScript में CFLOOP बहुत टूटी हुई है (और यह अभी भी CF 2016 में है)।
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
एक समारोह में सीएफएलओपी
किसी फ़ंक्शन के अंदर अनुक्रमणिका को
varयाlocalस्कोप के लिए सुनिश्चित करें।Foo()११ देता है।
<!--- 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>
वर्तमान के माध्यम से कोल्डफ्यूजन 11
cfloopफ़ंक्शन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
कोल्डफ्यूजन से पहले 8
<cfscript>
x = 0;
while (x LT 5) {
x = x + 1;
writeOutput('<li>' & x & '</li>');
}
</cfscript>
वर्तमान के माध्यम से कोल्डफ्यूजन 8
<cfscript>
x = 0;
while (x LT 5) {
x = x++;
writeOutput('<li>' & x & '</li>');
}
</cfscript>
वर्तमान के माध्यम से कोल्डफ्यूजन 11
cfloopफ़ंक्शन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>
टैग सिंटैक्स
cfloop के स्रोत के रूप में क्वेरी ऑब्जेक्ट geo का उपयोग करना। चूंकि तालिका dbo.state_zip में बहुत सारे रिकॉर्ड हैं, इसलिए उत्पन्न HTML में कुछ समय लगेगा। यह उदाहरण HTML के पहले 20 रिकॉर्ड के लायक दिखाता है।
<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>
ग्रुपिंग आउटपुट
उदाहरण के आंकड़ों में, एक ही राज्य कई शहरों के संबंध में कई बार सूचीबद्ध होता है जो प्रत्येक राज्य से जुड़े होते हैं। आप प्रत्येक शहर से संबंधित कई ज़िप कोड के संबंध में एक ही शहर को कई बार सूचीबद्ध देख सकते हैं।
आइए पहले आउटपुट को राज्य द्वारा समूहित करें। stateCode समूहित सामग्री के तहत आउटपुट होने वाली सामग्री के चारों ओर लिपटे cfloop के दूसरे उदाहरण पर ध्यान cfloop ।
<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>
एक समूहीकृत cfloop टैग से उत्पन्न HTML (एक्सट्रैक्ट)।
<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 द्वारा आउटपुट का समूह stateCode , फिर city अनुसार प्रति शहर की सभी zipCode प्रविष्टियां देखने के लिए। सूचना 2 cfloop अब city द्वारा समूहीकृत है और zipCode डेटा को आउटपुट करने के लिए एक 3 cfloop मौजूद है।
<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>
दो समूहीकृत cfloop टैग से उत्पन्न HTML (एक्सट्रैक्ट)।
<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
कोल्डफ्यूजन 6 (एमएक्स) हालांकि वर्तमान
<cfscript>
for (x = 1; x LTE geo.recordcount; x = x + 1) {
writeOutput( '<li>' & geo.city[x] & ' | ' &
geo.stateCode[x] & ' | ' & geo.zipCode[x] & '</li>');
}
</cfscript>
कोल्ड फ्यूजन 8 हालांकि वर्तमान
<cfscript>
for (x = 1; x <= geo.recordcount; x++) {
writeOutput( '<li>' & geo.city[x] & ' | ' &
geo.stateCode[x] & ' | ' & geo.zipCode[x] & '</li>');
}
</cfscript>
कोल्ड फ्यूजन 10 हालांकि वर्तमान
FOR INवाक्य रचना के साथ,xएक क्वेरी पंक्ति वस्तु है, न कि पंक्ति सूचकांक।
<cfscript>
for (x in geo) {
writeOutput( '<li>' & x.city & ' | ' &
x.stateCode & ' | ' & x.zipCode & '</li>');
}
</cfscript>
कोल्ड फ्यूजन 11 हालांकि वर्तमान
कोल्डफ्यूजन 11 ज्यादातर टैग्स को कॉस्क्रिप्ट के रूप में लिखे जाने की अनुमति देता है।
<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
कोल्डफ्यूजन से पहले 8
<cfscript>
for (x = 1; x LTE listLen(foo); x = x + 1) {
writeOutput("<li>" & listGetAt(foo, x) & "</li>");
}
</cfscript>
वर्तमान के माध्यम से कोल्डफ्यूजन 8
<cfscript>
for (x = 1; x <= listLen(foo); x++) {
writeOutput("<li>" & listGetAt(foo, x) & "</li>");
}
</cfscript>
वर्तमान के माध्यम से कोल्डफ्यूजन 9
<cfscript>
for (x in foo) {
writeOutput("<li>" & x & "</li>");
}
</cfscript>
वर्तमान के माध्यम से कोल्डफ्यूजन 11
cfloopफ़ंक्शनcfloopमेंlistलिए कोई समर्थन नहीं है।
HTML उत्पन्न की
ध्यान दें कि cfscript आउटपुट सभी एक लाइन पर है।
<li>one</li><li>two</li><li>three</li><li>four</li>
सरणी
cfloopसाथ एकarrayऑब्जेक्ट को सीधे उपयोग करने की क्षमता कोcfloop8 में जोड़ा गया था।
इस सरणी पर विचार करें;
<cfset aFoo = [
"one"
, "two"
, "three"
, "four"
] />
टैग सिंटैक्स
वर्तमान के माध्यम से कोल्डफ्यूजन 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>
वर्तमान के माध्यम से कोल्डफ्यूजन 2016
विशेषता
itemcfloop2016 के रूप मेंcfloopके व्यवहार कोcfloop।
index अलावा या इसके बजाय विशेषता item का उपयोग करना।
पैरामीटर
| गुण | अपेक्षित | चूक | विवरण |
|---|---|---|---|
| सरणी | सच | एक सरणी वस्तु। चर का मूल्यांकन किया जाना चाहिए (## के साथ लिपटा) | |
| मद | सच | सरणी का वर्तमान तत्व। | |
| सूची | असत्य | सरणी का वर्तमान सूचकांक। |
<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
कोल्डफ्यूजन से पहले 8
<cfscript>
for (i = 1; x LTE arrayLen(aFoo); i = i + 1) {
writeOutput("<li>" & aFoo[i] & "</li>");
}
</cfscript>
वर्तमान के माध्यम से कोल्डफ्यूजन 8
<cfscript>
for (i = 1; i <= arrayLen(aFoo); i = i++) {
writeOutput("<li>" & aFoo[i] & "</li>");
}
</cfscript>
वर्तमान के माध्यम से कोल्डफ्यूजन 9
FOR INवाक्य रचना के साथ, x वर्तमान सरणी तत्व है, न कि सरणी सूचकांक।
<cfscript>
for (x in aFoo) {
writeOutput("<li>" & x & "</li>");
}
</cfscript>
वर्तमान के माध्यम से कोल्डफ्यूजन 11
cfloopफ़ंक्शन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"
} />
टैग सिंटैक्स
पैरामीटर
indexबजाय विशेषताitemके उपयोग पर ध्यान दें।
| गुण | अपेक्षित | प्रकार | चूक | विवरण |
|---|---|---|---|---|
| संग्रह | सच | संरचना | एक 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>
वर्तमान के माध्यम से कोल्डफ्यूजन 11
cfloopफ़ंक्शनcfloopपासcollectionलिए कोई समर्थन नहीं है।
HTML उत्पन्न की
ध्यान दें कि cfscript आउटपुट सभी एक लाइन पर है।
<li>one</li><li>two</li><li>three</li><li>four</li>
सूचकांक लूप
कितने पुनरावृत्तियों होने चाहिए, यह निर्दिष्ट करने के to और विशेषताओं from उपयोग करें। (वैकल्पिक) step विशेषता आपको यह निर्धारित करने की अनुमति देती है कि वेतन वृद्धि कितनी बड़ी होगी।
<cfloop from="1" to="10" index="i" step="2">
<cfoutput>
#i#<br />
</cfoutput>
</cfloop>
सशर्त लूप
आप उपयोग करने के लिए condition निर्दिष्ट करने के लिए 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>
क्वेरी लूप
आप किसी कोल्डफ़्यूज़न क्वेरी के परिणामों पर लूप कर सकते हैं।
<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>
फाइल लूप
आप किसी फ़ाइल पर लूप कर सकते हैं।
<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>