2012-10-26 128 views
0

我試圖將循環的結果添加到數組。將循環添加到數組

這裏是我的代碼:

<cfset mobNumbers = ArrayNew(1)> 

<cfloop query = "staffLoop"> 
    <cfscript> 

     mobileNo = staffLoop.mobileno; 
     mobileNo = mobileNo.replaceAll("[^0-9]", ""); 
     ext = staffLoop.extension; 
     ext = ext.replaceAll("[^0-9]", ""); 

     if (Left(mobileNo, 2) == "07" || Left(mobileNo, 3) == "447") { 
     recipient = mobileNo; 
     } else if (Left(ext, 2) == "07" || Left(ext, 3) == "447") { 
     recipient = ext; 
     } else { 
     recipient = ""; 
     } 

     if (Left(recipient, 2) == "07") { 
     recipient = "447" & Right(recipient, Len(recipient) - 2); 
     } 

     if (Len(recipient) == 12) { 

     [send text code] 

     } 
    </cfscript> 
    </cfloop> 
<cfset ArrayAppend(mobNumbers, "recipient")> 

我們的目標是讓所有的手機號碼的數組。

我的代碼不工作,我經過一番研究,我不知道該怎麼做。有任何想法嗎?

如果可能我想爲我的解決方案使用非cfscript,但如果使用cfscript更容易,那很好。

回答

4

正如Adam指出的那樣,ArrayAppend需要在循環內。您還需要在對ArrayAppend的調用中移除「收件人」周圍的引號,否則您將有一個String「收件人」數組。

+0

哦,是的,好點。 –

+0

謝謝。在相關的說明,我的代碼錯誤,因爲'mobileNo = mobileNo.replaceAll'它不喜歡replaceAll,我不知道爲什麼。也許我應該開始另一個問題。當我註釋掉'mobileNo = mobileNo.replaceAll'時,它不會與其他replaceAll錯誤。 – Alias

+2

replaceAll是String類的java方法,所以它不直接受ColdFusion支持,但可以使用。看看這裏的Ben Nadel使用它的例子:http://www.bennadel.com/blog/1488-ColdFusion-Regular-Expressions-Do-Not-Support-Character-Class-Intersection-Or-Subtraction.htm – barnyr

1

你的arrayAppend()需要裏面的循環,否則你只是追加循環完成後的最後結果。

相關問題