Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Coldfusion 无法输出简单数组?_Coldfusion - Fatal编程技术网

Coldfusion 无法输出简单数组?

Coldfusion 无法输出简单数组?,coldfusion,Coldfusion,我一直在想为什么我的数组不能输出 我在数组上做了一个var转储,它转储得很好,但是当我试图输出它时,它返回致命错误。此外,我认为可能我必须循环数组才能访问它,所以我也尝试了,并通过执行var转储来循环数组,但当我输出它时,它会破坏页面 这是我的代码,我已经尝试了将近3个小时,现在尝试了各种各样的东西 ColdFusion: <cfset defaultDirectory = "C:\uploads\" /> <cfdirectory directory="#defaul

我一直在想为什么我的数组不能输出

我在数组上做了一个var转储,它转储得很好,但是当我试图输出它时,它返回致命错误。此外,我认为可能我必须循环数组才能访问它,所以我也尝试了,并通过执行var转储来循环数组,但当我输出它时,它会破坏页面

这是我的代码,我已经尝试了将近3个小时,现在尝试了各种各样的东西

ColdFusion:

<cfset defaultDirectory = "C:\uploads\" />

<cfdirectory
   directory="#defaultDirectory#"
   action="list"
   name="myList"
>

<!---Get Array of Directory Names --->
<cfquery dbtype="query" name="fileNames">
    SELECT NAME
    FROM myList
</cfquery>

<!---Create array --->
<cfset myArray=arraynew(1)>

<!---Populate array with directory query data "name" --->
<cfloop query="fileNames">
    <cfset myArray[CurrentRow][1]=#defaultDirectory# & NAME & "\">
</cfloop
到目前为止,一切似乎都很顺利。我转储了数组变量,它输出了我想要的内容。所以我尝试了这个,它返回了一个致命的错误

<cfoutput>

<cfif directoryExists("#myArray[1]#")>
   it exists.
   <cfelse>
   Doesn't exists.
</cfif>

<cfoutput>
下面是正在转储的变量的屏幕截图

然后我想也许我必须在阵列上循环才能访问它

所以我试过这个

<cfloop index="i" from="1" to="#arrayLen(myArray)#">
   <cfdump var="#myArray[i]#"
</cfloop>
这成功地从数组中转储了所有内容,但当我尝试输出它时,它返回了一个致命错误,我不知道为什么。我查阅了有关如何转储阵列的教程,我不确定我做错了什么?如有任何建议,将不胜感激

以下是请求的myArray结构的屏幕截图:

是的


您有一个结构数组。因此,不能简单地将数组值作为字符串输出;这就是为什么会出现错误

您需要引用数组索引以及结构的键来提取值。类似这样的伪代码:arrayName[arrayIndex][structureKey]。在最初的代码示例中,它看起来可以正常工作。在这里:

<cfset myArray[CurrentRow][1]=#defaultDirectory# & NAME & "\">
该代码的输出为:

因此,您的代码应该如下所示:

<cfif directoryExists("#myArray[1][1]#")>
   it exists.
<cfelse>
   Doesn't exists.
</cfif>
<cfloop index="i" from="1" to="#arrayLen(myArray)#">
    <cfif directoryExists("#myArray[i][1]#")>
       it exists.
    <cfelse>
       Doesn't exists.
    </cfif>
</cfloop>
或者,如果您将其包装成这样的循环:

<cfif directoryExists("#myArray[1][1]#")>
   it exists.
<cfelse>
   Doesn't exists.
</cfif>
<cfloop index="i" from="1" to="#arrayLen(myArray)#">
    <cfif directoryExists("#myArray[i][1]#")>
       it exists.
    <cfelse>
       Doesn't exists.
    </cfif>
</cfloop>

请添加转储阵列的屏幕截图,以便我们检查结构。这是您想要的吗?这是正在转储的myArray变量的结构。是。所以你有一系列的结构。我将发布一个答案,因为这将给我更多的空间来描述这一点。不确定总体目标是什么,但你可能做了太多的工作。返回可以对其执行数组函数的查询。至少,文件名q/q看起来是多余的。我需要抓取本地C:\中所有内容的文件夹位置,一旦抓取完毕,将其放入数组中。然后,在数组上循环并检查某个值是否等于我存储在数组中的任何文件夹目录。如果是,则将其上载到该特定文件夹目录。如果不是,请从数组变量创建一个新目录。感谢您的解释!很有帮助