PHP/Programmazione/Array: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
mNessun oggetto della modifica
m Update syntaxhighlight tags - remove use of deprecated <source> tags
 
Riga 7:
Gli array possono essere '''numerici''' o '''associativi''': nel primo caso ciascun elemento della lista è identificato unicamente da un indice numerico; nel secondo caso ogni valore ha un indice numerico e uno alfanumerico, che può quindi memorizzare altri dati particolari.<br />
In PHP non esistono matrici multidimensionali ma queste possono essere emulate creando strutture (anche molto complesse) con array di array, dal momento che ciascun elemento di un array può a sua volta essere un array:
<sourcesyntaxhighlight lang="php">
$valore = array();
$riga = 2;
Riga 14:
 
$valore[$riga][$colonna][$nome] = 10;
</syntaxhighlight>
</source>
Per inizializzare una variabile come array occorre dichiarare la variabile come tale e si utilizza la seguente notazione:
<sourcesyntaxhighlight lang="php">
$array = array();
</syntaxhighlight>
</source>
Per fare riferimento ad un elemento dell'array si usa la sintassi
<sourcesyntaxhighlight lang="php">
$array[indice]
</syntaxhighlight>
</source>
dove indice è un numero oppure, come spiegato sopra, una chiave alfanumerica.<br />
Per aggiungere all'array un elemento con un indice ''n'' è sufficiente fare riferimento all'elemento stesso, come nell'esempio seguente:
<sourcesyntaxhighlight lang="php">
$array = array();
$array[n] = "prova";
</syntaxhighlight>
</source>
Per inserire automaticamente un elemento alla fine della lista si usa invece la sintassi
<sourcesyntaxhighlight lang="php">
$array[] = valore;
</syntaxhighlight>
</source>
L'indice assegnato così all'elemento appena inserito è pari all'elemento maggiore incrementato di uno. Se l'array è vuoto, viene assegnato indice 0.
<sourcesyntaxhighlight lang="php">
$array = array();
$array[] = "prova1";
Riga 43:
echo $array[1];
echo $array[2];
</syntaxhighlight>
</source>
Questo semplice spezzone di codice restituirà
prova1prova2prova3
 
Se vogliamo indicare la posizione in cui inserirlo, oppure la chiave a cui dovrà essere associato, dovremo inserire il valore usando la sintassi seguente:
<sourcesyntaxhighlight lang="php">
$array = array();
$array[1] = "prova 1";
$array["prova"] = "prova 2";
</syntaxhighlight>
</source>
Ovviamente se un elemento è già presente a tale indice o chiave questo verrà sovrascritto.
 
È possibile assegnare dei valori all'array già in fase di dichiarazione, passandoli come parametri alla funzione array() che si occupa appunto di creare un nuovo array.
<sourcesyntaxhighlight lang="php">
$array = array( "prova1", "prova2", "prova3" );
echo $array[0];
echo $array[1];
echo $array[2];
</syntaxhighlight>
</source>
Questo spezzone di codice restituirà
prova1prova2prova3
Riga 73:
 
Ad esempio
<sourcesyntaxhighlight lang="php">
$array = array( 100, 200, 300 );
print_r( $array );
</syntaxhighlight>
</source>
restituirà il seguente output:
array(
Riga 87:
 
La funzione count, come suggerisce il nome, restituisce il numero di elementi contenuti nell'array.
<sourcesyntaxhighlight lang="php">
$array = array( 1, 2, 3, 4 );
echo count( $array );
</syntaxhighlight>
</source>
avrà come output
4
Riga 96:
=== implode ed explode ===
Queste due funzioni lavorano con le stringhe e gli array. La sintassi è:
<sourcesyntaxhighlight lang="php">
implode (collante, array)
explode (delimitatore, stringa)
</syntaxhighlight>
</source>
La prima restituisce una stringa ottenuta concatenando in ordine tutti gli elementi di <code>array</code> inframezzandoli dalla stringa <code>collante</code>.<br/>
La seconda restituisce un array ottenuto separando <code>stringa</code> utilizzando <code>delimitatore</code> come separatore.
<br/>Ad esempio:
<sourcesyntaxhighlight lang="php">
$arr = array('a','b','c');
$stringa = implode(":", $arr); //restituisce a:b:c
</syntaxhighlight>
</source>
 
 
Riga 115:
Questa non è proprio una funzione, ma una struttura di controllo.
Funziona così:
<sourcesyntaxhighlight lang="php">
$arr = array('a','b','c');
foreach($arr as $variabile_chiave => $variabile_contenuto)
Riga 121:
// istruzioni
}
</syntaxhighlight>
</source>
Esempio:
<sourcesyntaxhighlight lang="php">
$arr = array('a','b','c');
foreach($arr as $valore)
Riga 129:
echo $valore;
}
</syntaxhighlight>
</source>
oppure, se si vuole visualizzare anche la chiave dell'array si fà così:
<sourcesyntaxhighlight lang="php">
$arr = array('a'=>'lettera 1','b'=>'lettera 2','c'=>'lettera 3');
foreach($arr as $key=>$valore)
Riga 137:
echo "La chiave dell'array ".$key." è uguale a ".$valore.".<br>";
}
</syntaxhighlight>
</source>
Il primo esempio restituirà <code>abc</code>, il secondo <br>
<code>La chiave dell'array a è uguale a lettera 1.</code><br><code>La chiave dell'array b è uguale a lettera 2.</code><br><code>La chiave dell'array c è uguale a lettera 3.</code>
 
Si può utilizzare anche per fare qualcosa di più che un semplice echo, per esempio possiamo cambiare il valore di un elemento nel caso sia uguale a...:
<sourcesyntaxhighlight lang="php">
$arr = array('a','b','c');
print_r($arr);
Riga 152:
echo "<br>";
print_r($arr);
</syntaxhighlight>
</source>
l'output sarà <br />
 
Riga 163:
Unset distrugge la variabile ma non libera immediatamente la memoria!! La memoria verrà liberata quando ci sarà qualche ciclo di cpu non utilizzato oppure quando il programma finirà la memoria.<br>
Nel caso degli array, unset($mioarray); distruggerà l'array, con foreach invece distruggeremo i valori all'interno dell'array ma non l'array stesso. Infatti se:
<sourcesyntaxhighlight lang="php">
<?php
$arr=array('mario','ciccio','fuffi');
Riga 180:
echo is_array($mioarr) ? "si mioarr e' un array" : "no mioarr non e' un array array";
?>
</syntaxhighlight>
</source>
 
l'output sarà:
 
<sourcesyntaxhighlight lang=php>
Array ( [0] => mario [1] => ciccio [2] => fuffi )
</syntaxhighlight>
</source>
 
unset array arr, arr e' ancora un array?
Riga 198:
'''Attenzione!'''
Se utilizziamo foreach per cancellare gli elementi dell'array, non reindicizzeremo l'array, quindi:
<sourcesyntaxhighlight lang="php">
$mioarr=array('uno','due','tre');
print_r($mioarr);
Riga 209:
mioarr[]='ciccio';
print_r($mioarr);
</syntaxhighlight>
</source>
restituirà:<br>
<code>
Riga 218:
unset($mioarray);
la stessa cosa se cancelliamo solo un elemento:
<sourcesyntaxhighlight lang="php">unset($mioarr[1]);</sourcesyntaxhighlight>
ecco che l'array sarà adesso:
<sourcesyntaxhighlight lang="php">print_r($mioarr);</sourcesyntaxhighlight>
<code>Array ( [0]=>uno [2]=>tre )</code><br />
per reindicizzarlo dovremo usare:
<sourcesyntaxhighlight lang="php">$mioarr=array_values($mioarr);</sourcesyntaxhighlight>
<b>array_values</b> restituisce tutti i valori contenuti nell'array e indicizza numericamente l'array destinatario.<br />
L'array ora conterrà:<br />