2017-09-26 3 views
1

私は配列が出力されない理由を理解しようとしています。シンプルな配列を出力できませんか?

私は配列のvar dumpを実行しましたが、それは正常にダンプしますが、出力しようとすると致命的なエラーが返されます。また、おそらく私はおそらく私はそれにアクセスするために配列をループする必要があると思ったので、私もそれを試み、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> 

ここに、ダンプされる変数のスクリーンショットがあります。
enter image description here

私はそれにアクセスするために配列をループする必要があったと思いましたか?

だから私はこれを試しました。

<cfloop index="i" from="1" to="#arrayLen(myArray)#"> 
    <cfdump var="#myArray[i]#" 
</cfloop> 

これは、アレイからすべてのものをダンプするために管理が、私は出力にそれをしようとすると、それは私がなぜわからない致命的なエラーを返します。私は配列をダンプする方法についてのチュートリアルを見て、何が間違っているのか分からないのですか?任意の提案をいただければ幸いです。ここで

が要求されましたMyArrayというの構造のスクリーンショットです:

私は

<cfvar dump="#myArray#"> 

enter image description here

+0

構造を調べるために、ダンプされた配列のスクリーンショットを追加してください。 –

+0

それはあなたが望んだものですか?これは、ダンプされるmyArray変数の構造です。 – Curious13

+0

はい。だからあなたは構造体の配列を持っています。私はこれを説明するためにもっと多くのスペースを与えるので、私は答えを掲示します。 –

答えて

2

をしたあなたは、構造体の配列を持っています。したがって、単に配列値を文字列として出力することはできません。それがエラーを起こす理由です。

値を抽出するには、配列のインデックスと構造体のキーを参照する必要があります。この擬似コードのようなもの:arrayName[arrayIndex][structureKey]最初のコード例で作業しているようです。ここで:

<cfset myArray[CurrentRow][1]=#defaultDirectory# & NAME & "\"> 

あなたの構造のキーは数1であることを起こるので、それは私に混乱しました。だから、それはインデックスや何かのように見えました。

私は実際の例を示すために要点を作成しました - TryCF Gist

<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> 

それとも、ラップの場合:

enter image description here

だからあなたのコードは次のようになります。ここ は、私が書いたコードですそれはこのようなループで:

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

説明ありがとうございます!非常に役立ちます – Curious13

関連する問題