无法输出简单数组?

时间:2017-09-26 17:14:53

标签: coldfusion

我一直试图弄清楚为什么我的阵列不会输出。

我在数组上做了一个var转储,它转储就好了但是当我尝试输出它时,它会返回致命的错误。另外,我想也许我可能需要循环遍历数组才能访问它,所以我也尝试过并通过执行var转换设法循环遍历数组,但是当我输出它时,它会破坏页面。 / p>

这是我尝试过的代码,我尝试了近3个小时,现在尝试了各种各样的事情。

ColdFusion:

var oldObj = {
    oldProperty: 0
}

var newObj = {
    ...oldObj,
    newProperty: 1
}

console.log('Old Object: ' + JSON.stringify(oldObj, null, '    '))

console.log('New Object: ' + JSON.stringify(newObj, null, '    '))

到目前为止,一切似乎都很顺利。我抛弃了数组变量,它输出了我想要的东西。所以我尝试了这个并且它返回了一个致命的错误。

Old Object: {
    "oldProperty": 0
}
New Object: {
    "oldProperty": 0,
    "newProperty": 1
}

以下是转储变量的屏幕截图。
enter image description here

我接着想到的可能是我必须遍历数组才能访问它?

所以我尝试了这个。

<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

这设法从数组中转出所有东西但是当我尝试输出它时,它返回致命错误我不知道为什么。我查阅了有关如何转储阵列的教程,我不确定我做错了什么?任何建议,将不胜感激。

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

我做了

<cfoutput>

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

<cfoutput>

enter image description here

1 个答案:

答案 0 :(得分:3)

你有一系列结构。所以你不能简单地将数组值输出为字符串;这就是你收到错误的原因。

您需要引用数组索引以及结构的键来提取值。像这样的伪代码:BaseMoney=80。看起来你在最初的代码示例中使用了它。这里:

arrayName[arrayIndex][structureKey]

这让我感到困惑,因为你的结构键恰好是数字<cfset myArray[CurrentRow][1]=#defaultDirectory# & NAME & "\"> 。所以它看起来像一个索引或什么的。

我创建了一个要点,向您展示一个有效的例子 - TryCF Gist。 这是我写的代码:

1

该代码的输出是:

enter image description here

所以你的代码应该是这样的:

<cfscript>
structA = {1="C:\uploads\101 San Fernando"};
structB = {1="C:\uploads\121 Tasman"};
structC = {1="C:\uploads\360 Residences"};
structD = {1="C:\uploads\481 On Mathilda"};

myArray = [];
ArrayAppend(myArray,structA);
ArrayAppend(myArray,structB);
ArrayAppend(myArray,structC);
ArrayAppend(myArray,structD);

writeDump(myArray);

//writeOutput(myArray[1][1]);

for (i=1;i LTE ArrayLen(myArray);i=i+1) {
  writeOutput('<p>' & myArray[i][1] & '</p>');
}
</cfscript>

或者如果你把它包装成这样的循环:

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