Coldfusion将哈希表中存储的密钥作为数组

时间:2015-04-27 09:42:20

标签: coldfusion hashtable

我正在编写一个Coldfusion组件,它应该作为Java哈希表及其一些方法的包装器。我正在使用Coldfusion 8。

现在我的具体问题: 我已经实现了一个Java哈希表对象,我正在编写一个函数,该函数应该获取该哈希表的所有存储键并将它们存储在一个数组中,这样我就可以在Coldfusion应用程序中遍历该数组。

以下是我到目前为止所获得的功能:

<cffunction
    name="getKeys"
    access="public"
    returntype="array"
    output="false"
    hint="Returns all existing keys in an array">

    <cfscript>
        var keyArray = arrayNew(1);
        var e = myHashtable.keys();
        while(e.hasMoreElements()) {
            arrayAppend(keyArray, e.nextElement());
        }

        return keyArray;
    </cfscript>         
</cffunction>

我对Coldfusion相当新,我只是想知道我是否遵循正确的方法或完全错误。非常感谢每一个帮助或提示。

1 个答案:

答案 0 :(得分:1)

我还没有在ColdFusion 8上尝试过此操作,但您应该可以使用java.util.Collections list方法从<cfscript> hashtable = createObject("java","java.util.Hashtable"); hashtable.put("a", "ant"); hashtable.put("b", "bear"); hashtable.put("c", "cat"); arrayList = createObject("java", "java.util.Collections").list(hashtable.keys()); </cfscript> <cfdump var="#arrayList#"> 获取一系列关键名称。例如:

hashtable.values().toArray();

如果你想获得一系列值,你可以这样做:

$string = "hi my best friend #John How Are You?";
$arr = explode(" ",$string);
foreach($arr as $val){
    if (strpos($val,'#') !== false) {
        $result = str_replace("#","",$val);
    }
}
echo $result;

这可能比循环和附加到ColdFusion数组更有效。