
Con questo post riporto alcuni appunti relativi all’utilizzo del PHP. Come per gli appunti SEO, gli appunti PHP sono annotazioni e come tali lungi dall’essere esaustive. Spero possano essere utili anche a qualcun altro
, buona lettura.
In PHP, con il termine array identifichiamo una struttura dove i dati sono mantenuti grazie ad una associazione chiave –> valore.
Semplificando, possiamo distinguere due tipi principaly di array:
- Array numerici: utilizzano chiavi numeriche
- Array associativi: usano stringhe come chiavi
Possiamo creare una array così:
$a = array(‘I’,'II’,'III’,'IV’,'V’);
Oppure così:
$a[] = 'I'; $a[] = 'II'; $a[] = 'III'; $a[] = 'IV'; $a[] = 'V';
In entrambi i modi le chiavi (numeriche) vengono create automaticamente: in questo caso da 0 a 4.
Quando utilizziamo array associative possiamo dichiararle in questo modo:
$a = array( 'primo'=>'I','secondo'=>'II','terzo'=>'III','quarto'=>'IV','quinto'=>'V');
oppure
$a['primo'] = 'I'; $a['secondo'] = 'II'; $a['terzo'] = 'III'; $a['quarto'] = 'IV'; $a['quinto'] = 'V';
Possiamo parlare invece di array nidificati quando un elemento di un array è a sua volta un array. In questo caso la costruzione non cambia molto:
$a = array(
'romani' =>array( 'primo'=>'I','secondo'=>'II','terzo'=>'III','quarto'=>'IV','quinto'=>'V'),
'arabi'=>array('primo'=>'1','secondo'=>'2','terzo'=>'3','quarto'=>'4','quinto'=>'5')
);
Qui di seguito alcuni esempi d’uso suddivisi per casistiche:
Leggere il contenuto di un array
In assoluto una delle attività replicate più spesso è la lettura del contenuto di un array. In particolare la lettura a fini di debug, la lettura “semplice” e quella “ricorsiva”.
Per leggere velocemente il contenuto di un array due sono i comandi utili: print_r e var_dump. Entrambe le funzioni si occupano di stampare a video il contenuto di un array, var_dump genera un output più “verboso” rispetto a print_r. Fate una prova:
$a = array(
'romani' =>array( 'primo'=>'I','secondo'=>'II','terzo'=>'III','quarto'=>'IV','quinto'=>'V'),
'arabi'=>array('primo'=>'1','secondo'=>'2','terzo'=>'3','quarto'=>'4','quinto'=>'5')
);
print_r($a);
echo "br";
var_dump($a);
Per elaborare in modo ricorsivo gli elementi di un array si può utilizzare foreach. Facciamo un esempio:
$idArr = array("Pluto","Topolino","Pippo","Paperoga");
$stringa ="
<ul>";
foreach ($idArr as $i)
$stringa .="
<li>$i</li>
";
$stringa .="</ul>
";
echo $stringa;
Nel caso di un array annidato è necessario creare una funzione che chiama se stessa.
function leggoArray($arr) {
// controlla se l'input è effettivamente un array
if(!is_array($arr)) {die ("L'argomento passato non è un array");}
// scorre l'array
foreach ($arr as $value) {
// se è un array annidato scorre in modo ricorsivo
if(is_array($value)) {
leggoArray($value);
} else {
// stampa l'elemento
echo $value . "n";
}
}
}
// definiamo ora l'array annidato
$dati = array(
"Europa", array ("Francia", "Spagna"), array ("Italia", array("Liguria","Toscana"))
);
// richiamiamo la funzione
leggoArray($dati);
Conteggio degli elementi di un array
Per contare quanti elementi contiene un array si può utilizzare la funzione count(). In questo modo:
$paperopoli = array("pippo","plute","paperino","paperoga");
echo "Paperopoli ha " . count($paperopoli) . " elementi";
Composizione/scomposizione di un array
Tramite le funzioni implode() e explode() è possibile ottenere rispettivamente una stringa da un array e viceversa.
//definiamo la stringa
$alfabeto = "a b c d e f g h i l m n o p q r s t u v z";
$array_alfabeto = explode(" ",$alfabeto);
print_r($array_alfabeto);
//ora ricostituiamo una nuova stringa
$newAlfabeto = implode(", ",$array_alfabeto);
echo "<br/>" . $newAlfabeto;
Inserimento /eliminazione di elementi da un array
Con array_push() aggiungo un elemento alla fine dell’array:
array_push($paperopoli, "pinotto"); print_r($paperopoli);
Con array_shift() estraggo un elemento all’inizio dell’array:
array_shift($paperopoli); print_r($paperopoli);
Con array_unshift aggiungo un elemento all’inizio dell’array:
array_unshift($paperopoli,"la banda bassotti"); print_r($paperopoli);
Con array_pop() estraggo un elemento alla fine dell’array:
array_pop($paperopoli); print_r($paperopoli);
Con array_splice() si può rimuovere una porzione dell’array e sostituirla con altra:
$a= array("pippo","pluto","paperino","paperoga","gastone");
array_splice($input, 2);
// $input è ora array("pippo", "pluto")
Aggiungendo un argomento otteniamo anche la sostituzione degli elementi dell’array:
$a= array("pippo","pluto","paperino","paperoga","gastone");
array_splice($a, 2, 0, "minni");
Con array_slice() estraete un sottoinsieme da un array:
$paperopoli = array("pippo","pluto","paperino","paperoga","gastone");
$slice = array_slice($paperopoli,1,3);
print_r($slice);
Eliminare elementi duplicati da un array
Per eliminare i valori duplicati contenuti in un array si può utilizzare la funzione array_unique():
$numeri = array(10,20,10,15,16,17,18,19,19,19,1,1,1,1,4,98,97,99,98,0);
//estrae gli elementi unici e li mette in un nuovo array
$numeriunici = implode(", ",array_unique($numeri));
echo $numeriunici;
Reindicizzare un array
Quando si eliminano degli elementi da un array (ad esempio utilizzando unset()) rimangono dei “buchi” nelle chiavi numeriche. Utilizzando array_values() è possibile reindicizzare l’array:
$paperopoli = array("pippo","pluto","paperino","paperoga");
unset($paperopoli[2]);
print_r($paperopoli);
echo "<br/>";
$paperopoli = array_values($paperopoli);
print_r($paperopoli);
“Mescolare” un array in modo random
Utilizzando shuffle() è possibile reindicizzare in modo random il contenuto di un array
$numeri= array(1,2,3,4,5);
shuffle($numeri);
echo implode(", ",$numeri);
Cercare dentro un array
Rispettivamente con array_key_exists(“chiave”,Array) e in_array(“valore”,Array) possiamo controllare se una data chiave o un dato valore è presente nell’array:
$data = array(
"Euro" => "Italia",
"Dollaro" => "USA",
"Sterlina" => "Inghilterra");
echo array_key_exists("euro",$data) ? "La chiave è presente nell'array" : "La chiave non c'è";
echo "<br/>";
// ora controllo un valore
echo in_array("USA",$data) ? "Valore presente in array" : "valore assente dall'array";
Filtrare un array
A volte è necessario filtrare i valori di un array secondo un qualche criterio array_filter() sottopone ciascun elemento di un array ad una funzione e ne verifica il valore restituito
function positivo($value) {
return ($value > 0) ? true : false;
}
// definiamo un array di numeri
$numeri= array(-10.-2,-4,-10,5,20,45,-1);
print_r(array_filter($numeri, 'positivo'));
Uso delle array nei form
Le array risultano particolarmente utili quando abbiamo a che fare con valori multipli passati da un form:
// Si legge il contenuto di un array inviata via post
if (isset($_POST['invia'])) {
print_r($_POST['scelta']);
}
Qui di seguito un semplicissimo form che invia l’array “scelta” via post
<form action="<? echo $_SERVER['PHP_SELF']; ?>" method="post"> <input name="scelta[]" type="checkbox" value="Pippo" /> Pippo <input name="scelta[]" type="checkbox" value="Pluto" /> Pluto <input name="scelta[]" type="checkbox" value="Paperino" /> Paperino <input name="invia" type="submit" value="invia" /> </form>





Lascia un commento