Я работал с 2D-массивом на прошлой неделе, и независимо от того, что я пытался, я не смог получить доступ к элементам данных в массиве. Coldfusion все время возвращала ошибки «сложного/простого значения» или индекс элемента в позиции 1 и т. Д.Coldfusion: индекс элемента в 2D массиве
Я перешел на другой метод, используя структуру, но мне любопытно, почему я не мог получить правильное индекс.
Я пытался читать в текстовом файле:
<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
Однако вложенный цикл выше не становится правильное положение элемента в индексе, и я не понимаю, почему.
Спасибо за любую помощь или понимание, которое вы можете предоставить.
Вышеуказанное не компилируется. «Ошибка проверки параметров для функции LISTGETAT» У вас есть исходный код? – Leigh
Ваш второй цикл не имеет смысла. Если вы добавляете в myarr [1] и myarr [2], почему вы получаете индекс в [line] [j], когда строка является LINE файла ... не номер строки. И j зацикливается на arraylen myarr, но не хотите ли вы узнать длину myarr [1] или myarr [2] - действительно нужен оригинальный код, это довольно грязно. –
Просто FYI - Когда цикл за строкой над большим файлом ... вы можете просто использовать это ... он чище, и вам не нужно беспокоиться о разделителях и т. Д. do stuff –