Arrays 转换ColdFusion结构-分配自定义键

Arrays 转换ColdFusion结构-分配自定义键,arrays,struct,coldfusion,openbd,Arrays,Struct,Coldfusion,Openbd,我是CFML语言的新手,我有一个关于ColdFusion中的结构和数组的问题。注意,我使用的是openBD CFML服务器 我有以下对象(结构): 问题:我可以将上述对象修改为(并保留顺序,如果可能): 请注意,我需要分配自定义键(id并分配“lola”而不是“内容”)。为了完成上述任务,有什么需要学习的方法吗? 感谢您的帮助 您的意思是要将结构转换为数组吗?如果是,那么是的,你可以这样做。但是,结构没有固有的顺序,因此无法保留顺序。你的结果可能会以同样的顺序出现,但没有特别的理由 基本上,您希

我是CFML语言的新手,我有一个关于ColdFusion中的结构和数组的问题。注意,我使用的是openBD CFML服务器

我有以下对象(结构):

问题:我可以将上述对象修改为(并保留顺序,如果可能):

请注意,我需要分配自定义键(id并分配“lola”而不是“内容”)。为了完成上述任务,有什么需要学习的方法吗?
感谢您的帮助

您的意思是要将结构转换为数组吗?如果是,那么是的,你可以这样做。但是,结构没有固有的顺序,因此无法保留顺序。你的结果可能会以同样的顺序出现,但没有特别的理由


基本上,您希望创建一个新的空数组:[]。然后循环文档中的键(使用cfloop collection=“…”)。对于每个键,在数组中附加一个结构,这样结果就是一个结构数组。然后将其插入原始变量中。没有变量名就不能是特定的。

您的意思是要将结构转换为数组吗?如果是,那么是的,你可以这样做。但是,结构没有固有的顺序,因此无法保留顺序。你的结果可能会以同样的顺序出现,但没有特别的理由


基本上,您希望创建一个新的空数组:[]。然后循环文档中的键(使用cfloop collection=“…”)。对于每个键,在数组中附加一个结构,这样结果就是一个结构数组。然后将其插入原始变量中。如果没有变量名,则不能是特定的。

在上面的代码中,您完全可以执行您所说的操作。您将得到一个名为doc的数组,其中每个索引将包含一个具有in-ID键和LOLA键的结构。如果这是您想要的,那么您上面的代码将起作用


我要说的是,您的数据构造看起来可能会从其他东西中受益——可能是查询对象。但xml或json也可能是一个不错的选择。它看起来有点折磨人:)

在上面的代码中,你可以完全按照你说的做。您将得到一个名为doc的数组,其中每个索引将包含一个具有in-ID键和LOLA键的结构。如果这是您想要的,那么您上面的代码将起作用


我要说的是,您的数据构造看起来可能会从其他东西中受益——可能是查询对象。但xml或json也可能是一个不错的选择。看起来有点麻烦:)

简单,创建一个新数组,循环结构,然后像这样附加数组:

<cfset str = {
   "docs":{
      "23_id":{
         "content":[
            "I am"
         ]
      },
      "1_id":{
         "content":[
            "the most"
         ]
      },
      "7_id":{
         "content":[
            "crap coder"
         ]
      },
      "39_id":{
         "content":[
            "in the whole universe!"
         ]
      }
   }
}>

<cfset docs = { docs: []}>

<cfloop collection="#str.docs#" item="itm">
    <cfset arrayAppend( docs.docs, {id: itm, lola: str.docs[itm].content[1]} )>
</cfloop>

<cfdump var="#serializeJson(docs)#">

简单,创建一个新数组,循环结构,然后按如下方式追加数组:

<cfset str = {
   "docs":{
      "23_id":{
         "content":[
            "I am"
         ]
      },
      "1_id":{
         "content":[
            "the most"
         ]
      },
      "7_id":{
         "content":[
            "crap coder"
         ]
      },
      "39_id":{
         "content":[
            "in the whole universe!"
         ]
      }
   }
}>

<cfset docs = { docs: []}>

<cfloop collection="#str.docs#" item="itm">
    <cfset arrayAppend( docs.docs, {id: itm, lola: str.docs[itm].content[1]} )>
</cfloop>

<cfdump var="#serializeJson(docs)#">


Leptinela-我同意你的说法,结构没有固有的顺序。但是有一个相对强大的“structSort()”函数,我不需要对struct进行排序。我需要保留原来的indexOne更多评论。请注意,第一个对象是响应。因此,键是未知的。请注意structSort()不会返回已排序的结构。它返回一个排序键数组。leptinella-我同意你的说法,结构没有固有的顺序。但是有一个相对强大的“structSort()”函数,我不需要对struct进行排序。我需要保留原来的indexOne更多评论。请注意,第一个对象是响应。因此,键是未知的。请注意structSort()不会返回已排序的结构。它返回一个排序键数组。感谢您的回复。你在说什么“上面的代码可以工作”?我需要关于如何做到这一点的指点。再次感谢,谢谢你的回复。你在说什么“上面的代码可以工作”?我需要关于如何做到这一点的指点。再次感谢。“我需要保留原始索引”请注意,结构没有保证的顺序。因此,最终的内容是正确的,但不能保证数组元素的顺序是相同的。这是完全正确的,我们在处理结构时只能确定顺序,因为它们是基于键的,而不像数组那样基于索引。“我需要保留原始索引”请注意,结构没有保证的顺序。因此,最终的内容是正确的,但不能保证数组元素的顺序是相同的。这是完全正确的,我们在处理结构时只能确定顺序,因为它们是基于键的,而不像数组那样基于索引。
<cfset str = {
   "docs":{
      "23_id":{
         "content":[
            "I am"
         ]
      },
      "1_id":{
         "content":[
            "the most"
         ]
      },
      "7_id":{
         "content":[
            "crap coder"
         ]
      },
      "39_id":{
         "content":[
            "in the whole universe!"
         ]
      }
   }
}>

<cfset docs = { docs: []}>

<cfloop collection="#str.docs#" item="itm">
    <cfset arrayAppend( docs.docs, {id: itm, lola: str.docs[itm].content[1]} )>
</cfloop>

<cfdump var="#serializeJson(docs)#">