Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何在CF中将结构拆分为两部分?_Arrays_Coldfusion - Fatal编程技术网

Arrays 如何在CF中将结构拆分为两部分?

Arrays 如何在CF中将结构拆分为两部分?,arrays,coldfusion,Arrays,Coldfusion,我有一个结构,它提供了100多个范围。我想将这些作用域拆分为两部分,这样我就可以通过传递url变量在两个不同的时间间隔内运行这些作用域 <cfdump var="#variables[dynVarName]#"> ---- Struct of scopes <cfset howManyCustomScopes = listLen(structkeylist(variables[dynVarName],"|" ),"|" )> <!--- looping over

我有一个结构,它提供了100多个范围。我想将这些作用域拆分为两部分,这样我就可以通过传递url变量在两个不同的时间间隔内运行这些作用域

<cfdump var="#variables[dynVarName]#">  ---- Struct of scopes

<cfset howManyCustomScopes = listLen(structkeylist(variables[dynVarName],"|" ),"|" )>
<!--- looping over collection of scopes ---->
<cfloop collection="#variables[dynVarName]#" item="t">              
            <cfset tempurl = variables[dynVarName][t]["url"]>
            <cfset tempurl = tempurl & "&retainCache=1">            
            <cfoutput>
                <cfhttp url="#tempurl#" method="GET" resolveurl="false" timeout="4000">
                #tempurl#<br>
                <cfset scopesCachedCounter = scopesCachedCounter + 1>
                <cfmodule template="#Request.Library.CustomTags.VirtualPath#Scheduler_LogDetail.cfm" Step="Funded Scopes Cache" Detail="#scopesCachedCounter#.- #t#" LogData="#tempurl#"></cfmodule>
            </cfoutput>
</cfloop>
——作用域的结构
#tempurl#
所以我想把这些范围分成两部分。你知道怎么用CF做吗? 垃圾堆:给我的感觉是:
好的,我们现在有足够的时间继续

这说明了一个潜在的解决方案:

source = {
    key1 = "value1",
    key2 = "value2",
    key3 = "value3",
    key4 = "value4",
    key5 = "value5"
};
splitAt = structCount(source) \ 2;

first = {};
second = {};
structToPopulate = first;

for (key in source){
    structToPopulate[key] = source[key];
    if (structCount(structToPopulate) > splitAt){
        structToPopulate = second;
    }
}
writeDump([source,first,second]);

你能确认一下吗,你的图像显示的是一个结构而不是一个数组,所以你是在尝试拆分这个结构还是其他数组?你是对的。我正在尝试拆分屏幕截图中给出的结构。“#variables[dynVarName]#”如果您实际使用的是结构而不是数组,您应该更新您的问题以反映这一点。它们是两种不同的东西。如果它是一个结构,那么是什么定义了一个“部分”在哪里完成,下一个“部分”在哪里开始?结构在其键中没有顺序感,而第一部分和第二部分的概念有顺序感。是不是这样的一种情况,如果这个stuct有十把钥匙,你想要其中的任意五把分别放在两个部分中?@AdamCameron是正确的。结构没有顺序感,但我想如果您只想将其从中间拆分,可以使用StructCount获得键的总数,然后使用“集合”在结构上进行循环属性,并在该循环中执行某些操作,将第一个X键分隔为一个新结构,将第二个X键分隔为另一个结构。我不确定我是否理解此用例。如果您不关心顺序,那么如何根据您提到的URL变量知道每个“部分”中有哪些元素?我知道亚当已经回答了这个问题,并且被接受了。既然你有了“如何”,你能分享“为什么”吗?