微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 使用ColdFusion的CSV到多维数组

我正在尝试使用ColdFusion(版本7.0.2.142559)将CSV文件加载到数组中.现在我收到以下错误

A scalar value of type coldfusion.runtime.Struct cannot be assigned to a 2-dimensional ColdFusion array.
A ColdFusion 2-dimensional array can only hold 1-dimensional ColdFusion arrays and Java List objects.

我的CSV文件是以这种格式设置的:

a,b
c,d
e,f

这是我第一次使用ColdFusion,所以我可能有一些我看不到的简单语法错误.代码如下.

<!--- get the current full path of the current --->
<cfset currentPath = getCurrentTemplatePath()>
<cfset currentDirectory = getDirectoryFromPath(currentPath)>
<!--- get and read the CSV-TXT file --->
<cffile action="read" file="#currentDirectory#/smalltest.csv" variable="csvfile">
<!--- create a new array --->
<cfset array=ArrayNew(2)>
<!--- loop through the CSV-TXT file on line breaks and insert into database --->
<cfloop index="index" list="#csvfile#" delimiters="#chr(10)##chr(13)#">

    <cfset array[#index#][1]=#listgetAt('#index#',1, ',')#>
    <cfset array[#index#][2]=#listgetAt('#index#',2, ',')#>

</cfloop>

<cfdump var=#array#>

奖金:

另外,如果有一些方法可以从ColdFusion中调用PHP文件,那么它将节省我很多时间,因为我已经在PHP中完成了整个脚本(这只是一小部分).我读到了关于ColdFusion自定义标签(标签< cf_PHP>对我来说非常适合)但是管理员说没有,因此我必须使用ColdFusion或找到一些方法来通过ColdFusion呈现PHP.框架,JavaScript或< cfhttp>标签是我认为可能有用的所有东西…如果您有任何想法让我知道.

解决方法:

实际上我认为你可以使用一维数组和arrayAppend进一步简化Henry的例子.

<cfset array=ArrayNew(1)>
<cfloop index="line" list="#csvfile#" delimiters="#chr(10)##chr(13)#">
    <cfset arrayAppend(array, listToArray(line))>
</cfloop>

A scalar value of type
coldfusion.runtime.Struct cannot be
assigned to a 2-dimensional ColdFusion
array.

仅供参考:原始代码是混合循环类型.使用< cfloop list =“..”>索引值是列表中的元素,如“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, ',')#>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐