2012-08-27 10 views
6

Próba usunięcia identyfikatora użytkownika z podanej listy. Nie można tego złamać ... Błędy przy usuwaniu w ListDeleteValue - coś, czego mi brakuje. Na CF8.ListDeleteValue - Usuń część listy

<cfset curlist = "#userssigned#"> - say userx:usery:userz 
<cfset ud = "#session.user_id#"> - say userz 

<cfoutput> 
#curlist# 
<br> 
<br> 
#ud# 
<br> 

<cfset newlist = ListDeleteValue(curlist, "#ud#", ":") /> 

#newlist# - should delete userz? end up as userx:usery 
</cfoutput> 
+0

Nie ma takiej funkcji jak [ListDeleteValue] (http://cfdocs.org/listdeletevalue) –

+0

Niestety był z jakiejś Nadel zauważa - ale została ona zadeklarowana jako funkcja - mój zły .. Tylko zobaczyłem listdeletevalue –

Odpowiedz

10

Trzeba użyć ListDeleteAt() a także muszą znaleźć pozycję elementu na liście za pomocą ListFind() Ten kod działa poniżej

Uwaga: Nie trzeba używać "##" kiedy jesteś ustawienie zmiennej do innej zmiennej

<cfset userssigned = 'userx:usery:userz' /> 
<cfset session.user_id = 'userz' /> 

<cfset curlist = userssigned /> 
<cfset ud = session.user_id /> 

<cfoutput> 
#curlist#<br><br> 
#ud#<br> 
<cfset newlist = ListDeleteAt(curlist, ListFind(userssigned,ud,":"), ":") /> 
#newlist# - should delete userz? end up as userx:usery 
</cfoutput> 
+0

Exc thx działa - zmieniłem na odpowiednie tagi hashowe CF –

+1

Zobacz uwaga w odpowiedzi @ JamesPrivett – jinglesthula

1

Właśnie natknąłem to i myślę, że rozwiązanie dostarczane mogą błędu jeśli listFind() nie wywołuje rezultaty. Można rozważyć następujące

<cfset listPos = ListFind(userssigned,ud,":")> 
<cfif listPos> 
    <cfset newlist = ListDeleteAt(curlist, listPos , ":") /> 
</cfif>