2013-08-23 23 views
5

Happy Friday Tümü,Dinamik Değişken Adlandırma ve Referans (ColdFusion)

Birkaç gün boyunca bunu çatlatmaya çalışıyorum. Yapmak istediğim şey, sabit bir dizge ve bir değişken (sayı) kombinasyonu kullanarak dinamik olarak bir değişken oluşturmaktır.

Aracıların listesini almak için bir DB'yi sorgularım ve sonra her bir aracı için farklı istatistikleri tutmak için bağımsız değişkenler oluşturmak istiyorum. Döngüdeki mevcut statüyü (yani, oluşturulan biletleri) almayı ve sonra her aracı kimliğini sonuna eklemeye çalışıyorum.

GC numaralı ilk statüyü Get Created için çağıracağım, böylece geçerli stat ve aracı kimliğine sahip bir örnek değişken GC1 gibi bir şey olacaktır.

Çok sayıda çok farklı ipucu, kılavuz vb. Okudum ve okudum, ancak bunların çoğu ya güncel (2002!) Ya da sorgulardan ve dizilerden oluşuyor gibi görünüyor. Daha basit bir şey arıyorum (ya da inanıyorum).

ben dinamik olarak (YARDIM = Ajan ID) çizgisinde bir şey kullanarak değişken oluşturmak mümkün olmalıdır biliyorum: değişkendir Ben varsayıyorum böylece Şimdi

<cfset "GC#AID#" = getCreated.RecordCount> 

, ben hiç hata olsun doğru şekilde oluşturulduğum halde çıktıya gittiğimde değişken aslında bir konuya (ya da bence) girdiğim yer.

Bunu denemem için kaç farklı yol olursa olsun, çıktı her zaman GC1 olur. Bunun yerine, değişkeninin değişkeninin değerini değişken adında görüntülemesini istiyorum.

Değerlendirmeyi kullanmak istemediğimi biliyorum ve diğer sitelerde ve SO üzerinde yapısal notasyon kullanımıyla ilgili çok sayıda örnek gördüm, ancak bunlar her zaman bir sorguyla bağlantılıydı.

Burada çok basit bir şey eksik olmalıyım gibi hissediyorum. Bir sorgu içeriğinin dışında dinamik olarak oluşturulmuş bir değişkenin değeri değerini nasıl çıkarabileceğime dair herhangi bir düşünce var mı?

Uzunca sarılmış açıklama için özür dilerim, sadece açık olduğumdan emin olmak istiyorum.

Lütfen herhangi bir açıklama yardım ederse bana bildirin.

Eğer ilgili ise ColdFusion 10 kullanıyorum.

Şimdiden teşekkürler!

DÜZENLEME 1

Bu Şu anda Çıktı Kodu için ne var:

<cfset test = "GC#variables.AID#"> 
Test: <cfoutput>#test#</cfoutput> 

Ben bu muhtemelen işareti kapalı olduğunu biliyoruz.

<cfset variables["GC" & AID] = "Testing" /> 

Çıktı dinamik değişken adı değeri:

<cfoutput>#variables["GC" & AID]#</cfoutput> 

Başka Seçenek:

dinamik ayarlama

+0

Peki çıktı kodunuz nerede? Bu bir sorunla karşılaştığınız kod ama siz onu yayınlamıyorsunuz. –

+0

@JasonDean Özür dilerim, eklendi. –

+0

Aşağıdaki cevabımı görün. Sanırım soruna cevap verecek. Yukarıdaki örnekte, GC1 değerini değişken testine atayacaksınız. Çıktınız # test # olduğunda başka hangi çıktıları bekleyebilirsiniz? –

cevap

14

Bir Seçenek: dinamik bir değişken adını ayarlama

değişken adı:

<cfset variables["GC#AID#"] = "Testing" /> 

Çıktı dinamik değişken adı değeri:

<cfoutput>#variables["GC#AID#"]#</cfoutput> 
+1

Çok teşekkür ederim Jason. Anlamak ve çalışmak için çok kolay! –

1

Tüm değişken kapsamı yapılar bulunmaktadır. Yani bu kapsamda bir yapı olarak döngü. Kodunuz yazıldıkça değişkenler kapsamındadır. Bunu kendi yapısına koyardım, ama burada yapmaya çalıştığınız şeyin hacklenmiş bir versiyonu:

<cfloop collection="#variables#" item="k"> 

    <cfif left(k,2) eq "GC"> 
     <cfoutput>#k# : #variables[k]#</cfoutput><br/> 
    </cfif> 

</cfloop> 
İlgili konular