На самом деле, я думаю, вы могли бы еще больше упростить пример Генри, используя одномерный массив и arrayAppend.
<cfset array=ArrayNew(1)>
<cfloop index="line" list="#csvfile#" delimiters="#chr(10)##chr(13)#">
<cfset arrayAppend(array, listToArray(line))>
</cfloop>
Скалярное значение типа
coldfusion.runtime.Struct нельзя
назначен на 2-х мерный ColdFusion
массив.
К вашему сведению: оригинальный код смешивает типы циклов. При <cfloop list="..">
значение index
является элементом списка, таким как «a, b» (не номер строки). Очевидно, «a, b» не является ожидаемым числовым индексом, следовательно, ошибка.
<!--- what the code is actually doing --->
<cfset array['a,b'][1]=#listgetAt('#index#',1, ',')#>
<cfset array['a,b'][2]=#listgetAt('#index#',2, ',')#>
<cfset array['c,d'][1]=#listgetAt('#index#',1, ',')#>
....
Не имея ничего общего с вашей ошибкой, ни один из этих знаков # не является необходимым. Код будет работать в любом случае, но его будет проще написать:
<cfset array[lineNum][1]= listgetAt( index, 1, ',')>
вместо
<cfset array['#lineNum#'][1]=#listgetAt('#index#',1, ',')#>