2つのリストをループする方法は?

私はCFMAILで出力するために2つの別々のリストの出力に一緒に参加する必要があります、そして、私はこれに近づく最良の方法が何であるか疑問に思っています。

私は2つのフォームフィールドを持っています:first_nameとlast_name

各フィールドには最大5つの名前があります。私はこれらの名前をループして名字を結合し、順序付けられていないリストに出力する必要があります。私はこれを達成するための正しいアプローチが何であるかを視覚化するのに困っている。

誰かがCFMLでメソッドを提案できますか(私はCFSCRIPTをよく知っていません)。

ありがとう!

編集:私は、両方のフィールドは常にエントリの正確に同じ数を持つことを追加する必要があります。感謝したすべての人に感謝します - 猫の皮膚にたくさんの方法があるという証拠:)

3

5 答え

私は好きなことをするだろう


#ListGetAt(firstnames,i)# #ListGetAt(lastnames,i)#

これが5000のリストであれば、それを構造体や配列に入れるほうが良いでしょうが、〜5のリストで十分です。

4
追加された
ListGetAt()を使用するのではなく、GetToken()を使用します。 ListGetAt()と同じことを行いますが、リストの位置が存在しない場合はエラーをスローしません。それは単に空の文字列を出力します。
追加された 著者 rip747,
@ mrbusche - ありがとう、シンプルで清潔。
追加された 著者 red4d,

私はこれがこれを達成する最も簡単な方法だと思います。

<!--- Create a names container --->

<!--- Fill some dummy containers --->


<!--- Loop through the lists and append them to the container string --->

 ">


#names#
1
追加された

CFLOOPでは "list"属性を使用することができますが、これは出力内でリスト関数を結合することを意味します。しかし、それはどのようにすることができたかの例ですが、それは2つのリストが常に同じ長さを持つという前提を作ります。これらの名前がユーザーによって入力されている場合は、コンマで区切って入力すると恐れがあります。





    #FirstName# #ListGetAt(Variables.LastNames, ListFind(Variables.lstFirstNames, FirstName))#
1
追加された
私が言及するのを忘れてしまった、あなたが同じ名字を持つ複数の人を持っていたなら、もう一つの大きな問題があります。 ListFindは最初のオカレンスを検索します。
追加された 著者 Snipe656,
これは興味深いテクニックでもありました。 +1
追加された 著者 red4d,

あなたのリストの値が各インデックスに存在することを確認するためにチェックを追加します。そうしないと、エラーが発生します。私はまた、あなたが両方の場合に正確に5を入力しない場合に備えて、すべての値を取得するように、より大きなリストをループするチェックを追加します。




<!--- SEE WHICH LIST IS LONGER AND SET THAT AS THE ONE THAT WE WILL USE FOR THE LOOP --->

    

    




    

    
        
    

    
        
    

    
    



#myOutput#
1
追加された

試してください:





    #FirstName# #ListGetAt(Variables.lstLastNames, ListFind(Variables.lstFirstNames, FirstName))#
0
追加された
既存の回答の編集 cfoutput の追加など)を少し変更した方がよい>、またはコメントを残してください。
追加された 著者 Leigh,
同意しましたが、上位のいくつかはすべてエラーを解決します。これは更新された(動作中の)コードです。しかし、私は思考を示すことができたと思う。
追加された 著者 Fergus,