Christian Castelli
a- a+

Liste ed array (Parte I)

LISTE ED ARRAY

Fino ad ora, abbiamo avuto a che fare solo con le variabili che immagazzinano un singolo valore. Le liste e gli array vengono usati per memorizzare valori multipli in una singola variabile.

Le liste non sono nient'altro che semplici stringhe delimitate da uno speciale carattere o un set di caratteri (di default il delimitatore è la virgola). Una lista può esser creata attraverso in questo modo:

E' possibile cambiare il delimitatore con un altro carattere qualsiasi o con un gruppo di caratteri:

Il codice seguente mostra come scorrere le liste.

Es.1: ListLoops.cfm

<html>
  <head>
  <title>Le liste</title>
  </head>
  <body>
  <h1>Liste</h1>
    <h2>Lista 1</h2>
  <cfset numlist="1,2,3,4,5">
  <cfloop index="num" list="#numlist#">
   <cfoutput>#num#</cfoutput>
  </cfloop>
    <h2>Lista 2</h2>
  <cfset beatles="paul john ringo george">
  <ul>
  <cfloop index="beatle" list="#beatles#" delimiters=" ">
   <li><cfoutput>#beatle#</cfoutput></li>
  </cfloop>
  </ul>
  </body>
</html>

 

<a href="/img/22/iframe_CF_listArray1.html" title="Vedi esempio">Vedi codice</a>;

 


Le funzioni per trattare le liste

ColdFusion fornisce molte funzioni integrate per lavorare con le liste. L'elenco puntato qui sotto ne mostra alcune fra le più comuni:

  • ListLen(): determina il numero di elementi in una lista;
  • ListFind(): ritorna l'indice del primo elemento della lista nella quale occorre uno specifico valore. Questa funzione è case-sensitive, mentre la versione case-insensitive è ListFindNoCase();
  • ListContains(): ritorna l'indice del primo elemento nella lista che contiene la sottostringa specificata. Questa funzione è case-sensitive, mentre la versione case-insensitive è ListContainsNoCase();
  • ListValueCount(): conta le istanze di uno specifico valore in una lista. la ricerca è case-sensitive, mentre la funzione analoga ma case-insensitive è ListValueCountNoCase();
  • ListDeleteAt(): ritorna una copia della lista senza l'elemento specificato;
  • ListGetAt(): ritorna un elemento della lista corrispondente alla posizione specificata;
  • ListSetAt(): sostituisce i contenuti di un elemento della lista;
  • ListSort(): ordina gli elementi della lista secondo una certa metodologia ed ordine;
  • ListAppend(): appende alla lista un elemento o un'altra lista;
  • ListPrepend(): inserisce un elemento all'inizio di una lista;
  • ListInsertAt(): inserisce un elemento in una lista;
  • ListFirst(): ritorna il primo elemento di una lista;
  • ListRest(): ritorna una lista, senza il primo elemento;
  • ListLast(): ritorna l'ultimo elemento di una lista;
  • ArrayToList(): converte un array monodimensionale in una lista;
  • ListToArray(): converte una lista in un array monodimensionale;
  • ReplaceList(): sostituisce tutte le occorrenze degli elementi da una lista delimitata in una stringa con gli elementi corrispondenti da un'altra lista delimitata. La ricerca è case-sensitive;
  • ListChangeDelims(): cambia il delimitatore di una lista;
  • ListQualify(): inserisce una stringa all'inizio e alla fine di una lista.


Array monodimensionali

Questa tipologia di array assomiglia molto alle liste o alle tabelle con una sola colonna. Un array può contenere zero o più elementi. In ColdFusion, a differenza di molti altri linguaggi di programmazione, il primo elemento di un array ha indice 1 (solitamente è 0). Un array senza elementi ha dimensione pari a 0.

Gli array vengono creati con la funzione integrata ArrayNew(), che prende un argomento - il numero delle dimensioni dell'array. Il codice seguente crea un array monodimensionale e vi aggiunge 4 elementi:

      

La prima linea del codice soprastante è di fatto opzionale poiché nella seconda linea si crea l'array se questo non esiste ancora. Ad ogni modo, è buona pratica creare esplicitamente l'array.

Leggere il contenuto di un array è solo questione di puntare un indice specifico dell'array stesso.

#beatles[3]#  

Il codice seguente mostra come creare un array, stampare in output un singolo elemento dell'array per poi scorrere l'intero array stampando ogni singolo elemento. Si noti che il codice usa la funzione ArrayLen() per determinare la grandezza dell'array, che coincide con l'indice più grande. Le sezione successive discuteranno altre funzioni per la gestione degli array.

Es.2: Arrays.cfm

<head>
  <title>Array</title>
  </head>
    <body>
  <cfset beatles = ArrayNew(1)>
  <cfset ArrayAppend(beatles,"John")>
  <cfset ArrayAppend(beatles,"Paul")>
  <cfset ArrayAppend(beatles,"George")>
  <cfset ArrayAppend(beatles,"Ringo")>
    <!--- stampiamo in output George --->
  <cfoutput>#beatles[3]#</cfoutput>
    <ul>
  <cfloop from="1" to="#ArrayLen(beatles)#" index="i">
   <li><cfoutput>#beatles[i]#</cfoutput></li>
  </cfloop>
  </ul>
  </body>
</html>

 

<a href="/img/22/iframe_CF_listArray2.html" title="Vedi esempio">Vedi codice</a>;



Ti potrebbe interessare anche

commenta la notizia

C'è 1 commento
Redazione
Condividi le tue opinioni su questo articolo!