在ColdFusion中给出以下字符串:
ul[0][id]=main1 &ul[0][children][0][id]=child2 &ul[0][children][0][class]= &ul[1][id]=main3 &ul[2][id]=main4 &ul[3][id]=main5
如何使用上述信息创建数组?
由于
答案 0 :(得分:2)
从查看字符串看起来你要做的是将url查询字符串转换为结构数组。这是我们在调度员cfwheels中完成的事情,而且非常复杂。要了解我们是如何做到的,请查看调度程序代码:
http://code.google.com/p/cfwheels/source/browse/trunk/wheels/dispatch/request.cfm
要查看的方法是:
$的CreateParams()
$ getParameterMap()
$ createNestedParamStruct()
$ createNewArrayStruct()
答案 1 :(得分:1)
这个字符串并不完全清楚,但我最好的猜测是你正在寻找这样的东西。这是一个结构结构的数组,在观察到所有“更深”的数组(如children
)似乎只有一个元素(即只有children[0]
,其值是一个结构密钥id
和class
,每个密钥似乎只有一个值。)
ul = [];
ul[1] = {}; // ColdFusion arrays are not zero-indexed
ul[1]['id'] = 'main1';
ul[1]['children'] = {}; // Another struct
ul[1]['children']['id'] = 'child2';
ul[1]['children']['class'] = ''; // blank in your example
ul[2]['id'] = 'main3';
ul[3]['id'] = 'main4';
...etc...
我假设您以某种方式解析该编码字符串,并且您将循环并在每次迭代时创建新的数组元素。有更简洁的方法可以做到这一点。
但这可能会提出一个问题:将编码数组存储为标准格式,通过本机CFML函数轻松编码和解码会不会更好?在数组上使用serializeJSON()
获取字符串,使用deserializeJSON()
将字符串转回数组。
答案 2 :(得分:0)
Form Utilities cfc听起来就像你需要的那样。