J'ai un tableau à deux dimensions. J'écris 3 valeurs dans le tableau pendant son initialisation et j'ajoute une quatrième valeur si une valeur de tableau n'est pas égale à une valeur passée à travers un formulaire. Ensuite, je veux vérifier, si la quatrième valeur existe.ColdFusion: Comment vérifier si un certain élément existe dans un tableau à deux dimensions?
update.cfm
<cfset array = obj.getArray() />
<cfif not StructIsEmpty(form)>
<cfloop collection="#form#" item="key">
<cfif left(key,3) eq "ID_">
<cfset number = listLast(key,"_") />
<cfset value = evaluate(0,key) />
<cfloop index="j" from="1" to="#arrayLen(array)#">
<cfif (array[j][1] eq number) and (array[j][3] neq value)>
<cfset array[j][3] = value />
<cfset array[j][4] = "true" />
</cfif>
</cfloop>
</cfif>
</cfloop>
<cfset obj = createObject("component", "cfc.Obj").init(arg = form.arg, argarray = array) />
<cfset application.objDao.update(obj) />
objDao.cfc méthode update
<cfset matarray = arguments.obj.getArray() />
<cfloop index="i" from="1" to="#arrayLen(array)#">
<cfquery name="qUpdateAsset" datasource="#variables.instance.dsn#">
UPDATE table
SET value = <cfqueryparam value="#matarray[i][3]#" cfsqltype="cf_sql_integer" />
<!--- This is wrong, how do i check the existence correctly? --->
<cfif StructKeyExists(matarray[i],"4")>
,status = 'true'
</cfif>
WHERE arg = <cfqueryparam value="#arguments.obj.getArg()#" cfsqltype="cf_sql_smallint" />
AND number = <cfqueryparam value="#matarray[i][1]#" cfsqltype="cf_sql_integer" />
</cfquery>
</cfloop>
Mes mauvais résultats de la tentative de cette erreur:
You have attempted to dereference a scalar variable of type class coldfusion.runtime.Array as a structure with members.
qui a fait l'affaire – mrt181