我正在写一个函数,循环注册页面上的一些信息。在循环内,我试图调用基于数组的函数。我遇到的问题实际上是正确调用函数,因为我试图将变量作为函数名称的一部分。如何在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的新手,所以我会和人群一起使用,而不是使用其他人。另一个更容易一点,但如果有问题,我不想进入!再次感谢! –