Указать не работает правильно - PullRequest
1 голос
/ 02 ноября 2010

Я не уверен, что REFind работает правильно. Я в основном пытаюсь определить, начинается ли строка с определенного имени, я выполняю некоторые действия, но я не уверен, смогу ли я использовать REFind в условном смысле. Мой код ниже, и он должен вернуть как минимум 2 успешных результата.

<cfloop list="#form.fieldnames#" index="field">
 <cfif REFind("^xtra_" & i, field)>
  <cfset recipient = ArrayNew(1)>
  <cfset ArrayAppend(recipient, evaluate("xtra_#LOCAL.sanity.id[LOCAL.i]#_email-#i#"))>
  <cfset ArrayAppend(recipient, evaluate("xtra_#LOCAL.sanity.id[LOCAL.i]#_name_department-#i#"))>
  <cfset ArrayAppend(recipients, recipient)>
 </cfif>
 <cfset i=i+1>
</cfloop>
<cfdump var="#recipients#">
<cfabort>

Ответы [ 2 ]

1 голос
/ 02 ноября 2010

REFind возвращает целое местоположение искомой строки.Хотя вы можете использовать ярлык ColdFusion, где 0 соответствует значению false, а любое другое значение равно значению true (как вы делаете), я предлагаю быть более явным в вашем условии.

Другими словами ...

REFind("^xtra_" & i, field) GT 0>
    <!--- string found --->

или

REFind("^xtra_" & i, field) EQ 0>
    <!--- string NOT found --->

Поскольку вы пытаетесь найти определенную подстроку в начале строки, возможно, что-то вроде <cfif REFind("xtra_" & i, field) EQ 1> могло бы вам лучше помочь.

1 голос
/ 02 ноября 2010

Случайно, я бы сказал, что я не правильно установлен до цикла. Я бы добавил отладочный вывод внутри цикла, чтобы сказать мне, что он делает.

Если это не поможет, пожалуйста, покажите нам пример данных формы (включая поля формы) и результаты вашего дампа получателей.

И пока я на этом, избегайте оценки (). Вы можете ссылаться на переменные, используя скобочные обозначения, такие как:

form["xtra_" & LOVAL.sanity.id[LOCAL] & "_email-" & i]

define () по своей сути неэффективна и может быть дырой в безопасности, поскольку она может выполнять произвольные данные. Хотя это может и не быть проблемой безопасности, лучше всего полностью ее избежать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...