2014-01-30 78 views
0

上週我正在處理二維數組,無論我嘗試了什麼,我都無法訪問數組中的數據元素。 Coldfusion不斷返回位置1中的「複雜/簡單值」錯誤或elemnet索引等。Coldfusion:二維數組中的元素索引

我移動了一個使用struct發現的不同方法,但我很好奇爲什麼我無法獲得正確的指數。

我試圖在一個文本文件閱讀:現在

<cfset myarr = arraynew(2) /> 

<cffile action="read" file="#filepath#" variable="filedata" /> 

    <cfloop list="#filedata#" index="line" delimiters="#chr(13)##chr(10)#"> 

     <cfset line = trim(line) /> 

     <cfif line contains "routing number"> 
      <cfset arrayappend(myarr[1], listlast(line, ":")) /> 
     <cfelseif line contains "account number"> 
      <cfset arrayappend(myarr[2], listlast(line, ":")) /> 
     </cfif> 

     <cfloop index="j" from="1" to="#arraylen(myarr)#" step="1"> 
      <cfoutput> 
       #listgetat(myarr[line][j])# 
      </cfoutput> 
     </cfloop> 
    </cfloop> 

,如果我傾倒了我的陣列,該陣列看起來是正確的

array 
1 
    1 999999999 
    2 111111111 

array 
2 
    1 12345678 
    2 987654321 

然而,嵌套循環上面並沒有得到元素在索引中的正確位置,我不明白爲什麼。

感謝您提供任何幫助或見解。

+0

以上不編譯。 「LISTGETAT函數的參數驗證錯誤」你有原始代碼嗎? – Leigh

+0

你的第二個循環沒有意義。如果添加到myarr [1]和myarr [2]中,當line是文件的LINE ...而不是行號時,爲什麼要在[line] [j]處獲取索引。 j正在循環播放myarr,但是你不想知道myarr [1]或myarr [2]的長度 - 真的需要原始代碼,這很麻煩。 –

+2

只是一個供參考 - 當在一個大文件上逐行循環時......你可以使用這個......它更清潔,你不必擔心分隔符等。 做東西

回答

1

你的邏輯只是沒有任何意義:

  1. 你的第二個循環是試圖循環陣列之上,而你還在構建它(這是不可能的,但似乎並沒有像什麼您想要做;
  2. 您正在循環在陣列(arraylen(myarr))的第一維的長度,但是如果使用這些變量如在陣列的維度中的索引
  3. 我強烈懷疑。你需要一個結構作爲第一維,而不是數組。什麼是nat數據?

此外,正如別人暗示,請張貼您的實際代碼。這不可能是你的代碼,因爲它甚至不能編譯,更不用說運行了。

這個答案並沒有讓你到你想要結束的地方(因爲你沒有明確地定義),但它解釋了爲什麼你肯定沒有到達那裏。

我可以建議你修改你的問題來描述你實際想要達到的目標,並根據評論中的所有建議先修改你的代碼。然後發佈實際編譯的代碼。

+0

批量ACH數據的文本文件。我沒有實際的代碼發佈,因爲我最終走向另一個方向,取消了我一直在研究的數組代碼。感謝你的回答。我不想在這個問題上浪費任何人的時間。 – user3096976

+0

右鍵。因此,請在回答中填寫問題,或將其刪除。不要讓它掛在身邊,因爲人們會認爲它仍然需要回答。建議刪除它。 –