我想打印出这个数据库中朋友的不同名字。根据所选的名字,它会打印出与该名字相关的朋友列表。
%%[
FOR @y = 1 TO @friendRowcount DO
Set @friendRow = Row(@friendRows,@y)
Set @friendName = Lookup("DB_FriendIDToName","friend_name","friendid",FIELD(@FriendRow,"friendid"),"language",Lowercase(@lookupLang))
Set @NameList = CONCAT(@NameList, @friendName, ", ")
NEXT @y
Set @bodytext = Replace(@bodytext,"PLACEHOLDERFRIENDNAMES", @NameList)
Set @bodyText = "Your friends are PLACEHOLDERFRIENDNAMES."
]%%
%%=v(@bodyText)=%%
问题是它只打印出一个名称,而不是逗号分隔的列表。看到这个列表的长度通常与其他列表的长度不同,我不知道如何动态地做到这一点。
我想看到的输出是"Your friends are Name1, Name2, Name3, and Name4.
"
我目前看到的是"Your friends are Name3
",因为它每次看起来都会替换@Name
(进而替换@NameList
),而不是添加它。
编辑:更新了代码,这是朝着正确方向迈出的一步。我遇到的最后一个问题是弄清楚如何处理"和Name#"部分。
%%[
Set @bodyText = "Your friends are PLACEHOLDERFRIENDNAMES."
FOR @y = 1 TO @friendRowcount DO
Set @friendRow = Row(@friendRows,@y)
Set @friendName = Lookup("DB_FriendIDToName","friend_name","friendid",FIELD(@FriendRow,"friendid"),"language",Lowercase(@lookupLang))
IF (@y == 1) THEN
Set @NameList = @friendName
ELSEIF (@y < @friendRowcount) THEN
Set @NameList = CONCAT(@NameList,", ",@friendName)
ELSEIF (@y == @friendRowcount) THEN
Set @NameList = CONCAT(@NameList, ", and ", @friendName)
ENDIF
NEXT @y
Set @bodyText = Replace(@bodyText,"PLACEHOLDERFRIENDNAMES", @NameList)
]%%
%%=v(@bodyText)=%%
修复了中间部分。谢谢你的帮助!包括可怕的牛津逗号,用于那些可能出现并造成混乱的情况。