我正在使用數組來存儲請求的信息。在請求中的某一點,他們可以添加或刪除信息。ArrayDeleteAt - ColdFusion
刪除按鈕將索引傳遞到找到ArrayDeleteAt()的邏輯的頁面。
在它下面的代碼頁:
<cfif (isDefined('form.deleteIndex'))>
<cfset temp = arrayDeleteAt(session.Request,form.deleteIndex)>
</cfif>
如果刪除了第一個項目,它不會刪除結構出數組,但清除值了。刪除其他任何項目時都可以,但是我無法從陣列中刪除空白。
創建陣列:
<CFSET VarArrayLen = ArrayLen(session.ord)>
<CFSET VARDuplicatedItem = "False">
<cfloop index="i" from="1" to="#VarArrayLen#">
<CFIF session.ord[i].ITEMID eq ITEMID >
<CFSET VARDuplicatedItem = "TRUE">
</CFIF>
</CFLOOP>
<CFIF VARDUPLICATEItem eq "False">
<cfset temp = arrayAppend(session.ord,StructNew())>
<cfset session.ord[arraylen(session.ord)].ITEMID = ITEMID>
<cfset session.ord[arraylen(session.ord)].ITEMDETAILS = ITEMDETAILS>
<cfset session.ord[arraylen(session.ord)].FullRequestDetails = FullRequestDetails>
</CFIF>
一個頁面,允許用戶從陣列添加或刪除:
<CFSET VarArrayLen = ArrayLen(session.ord)>
<table>
<cfloop index="i" from="1" to="#VarArrayLen#">
<CFIF ArrayIsDefined(session.ord,i) eq true>
<tr>
<cfform action="ActionPage.cfm" method="post">
<td>
<input type="hidden" value="#i#" name="del" />
<input type="image" src="/images/stop.gif" width="8" alt="delete this item" />
</td>
</cfform>
</tr>
</CFIF>
</CFLOOP>
</table>
在頁面,它會刪除的項目:
<cfif (isDefined('form.del'))>
<cfset temp = arrayDeleteAt(session.ord,form.del)>
</cfif>
那是所有的代碼。
在會話中它仍然顯示數組中的一個項目,其中所有的值都是空的。
它始終是第一個要刪除的項目,它們保留在數組中,其餘的都被刪除。
有趣,但它會更有用的,如果你能證明在測試情況下,看似怪異的行爲。 – Henry
是的,請發佈我們可以測試的[small,* self-contained *,repro case](http://www.sscce.org/)。 – Leigh
我已更新頁面上的代碼以顯示下面的腳本。 – user1186309