2009-04-21 41 views

Trả lời

35

Để kiểm tra cho sự tồn tại quan trọng, tôi khuyên bạn nên:

<cfif StructKeyExists(MyStruct, "mittens")> 

<!--- or ---> 

<cfset key = "mittens"> 
<cfif StructKeyExists(MyStruct, key)> 

Đằng sau những cảnh này gọi phương thức containsKey() của java.util. bản đồ cấu trúc Coldfusion dựa trên. Điều này được cho là phương pháp nhanh nhất để tìm ra nếu một khóa tồn tại.

Cách khác là:

<cfif IsDefined("MyStruct.mittens")> 

<!--- or ---> 

<cfset key = "mittens"> 
<cfif IsDefined("MyStruct.#key#")> 

Đằng sau những cảnh này gọi Eval() trên chuỗi thông qua (hoặc vì vậy tôi tin) và cho bạn biết nếu kết quả là một tài liệu tham khảo khác nhau. So sánh thì chậm hơn StructKeyExists(). Ở bên cạnh: Bạn có thể kiểm tra khóa phụ trong cấu trúc lồng nhau trong một cuộc gọi:

<cfif IsDefined("MyStruct.with.some.deeply.nested.key")> 
2

Tìm thấy câu trả lời here

Đó là StructKeyExists

+0

Được xác định cũng sẽ hoạt động nhưng chậm hơn. – Tomalak

+2

Lý do IsDefined không hoạt động cho bạn khi được nhập là dấu ngoặc kép bị thiếu. Thay vì tìm kiếm khóa cấu trúc 'găng', nó đã cố gắng để dereference các phím găng để xem kiểm tra sự tồn tại. Đó là lý do tại sao bạn vẫn gặp lỗi –

Các vấn đề liên quan