我正在寫一個函數,循環註冊頁面上的一些信息。在循環內,我試圖調用基於數組的函數。我遇到的問題實際上是正確調用函數,因爲我試圖將變量作爲函數名稱的一部分。如何在ColdFusion中將變量名稱作爲函數名稱的一部分?
這裏是我的代碼:
<cfscript>
fields = arraynew(1);
fields[1] = 'r_email';
fields[2] = 'r_uname';
fields[3] = 'r_pass';
for(i = 1; i lte arraylen(fields); i = i + 1)
{
func = fields[i].split('r_');
func = 'validate_#func[2]#(#fields[i]#)';
}
</cfscript>
所以,我有三個功能:validate_email,validate_uname,validate_pass。如果我拋出一個writeoutput(),並嘗試輸出函數的結果,它們不起作用。
下面是代碼:
<cfscript>
fields = arraynew(1);
fields[1] = 'r_email';
fields[2] = 'r_uname';
fields[3] = 'r_pass';
for(i = 1; i lte arraylen(fields); i = i + 1)
{
func = fields[i].split('r_');
func = 'validate_#func[2]#(#fields[i]#)';
writeoutput('#func#');
}
</cfscript>
現在,我明白,當你使用writeoutput(),和你調用一個函數,你需要在兩端的哈希符號。所以,假設我這樣寫:
writeoutput('#validate_#func[2]#(#fields[i]#)#');
它不起作用,因爲第二個散列符號會取消函數調用。這是怎樣的功能最終應該看(例如電子郵件):
writeoutput('#validate_email('[email protected]')#');
我怎樣才能用正確的變量名稱替換「電子郵件」(#validate_email ......),而且還有功能的工作?我希望我能夠理解這一點!
這不是CF中的錯誤,Peter:它從來沒有實現過。你可能想修改你的評論來達到這個效果。否則就地答覆。 –
'Variables.Bob()'和'Variables ['Bob']()'應該沒有區別,但是第二個拋出錯誤。我稱這是一個括號表示中的錯誤,而不是一個未實現的功能。 –
謝謝你。我收到的兩個建議都很好。我是CF的新手,所以我會和人羣一起使用,而不是使用其他人。另一個更容易一點,但如果有問題,我不想進入!再次感謝! –