Un problema comune nell'invio di dati tramite form HTML è quello realtivo alla trasmissione degli array. E' molto scomodo estrarre tutti i valori di un array, soprattutto nel caso in cui questo sia di grosse dimensioni, e inviarli destinando ad ognuno di essi un determinato campo.
Fortunatamente PHP ci mette a disposizione una funzione, denominata serialize() che genera una versione archiviabile di un valore; in pratica serialize() restituisce in output una stringa contenente un flusso di bytes senza perderne la struttura.
Facciamo un esempio, creiamo un array di questo tipo:
$array = array("a","b","c","d","e");
Sono presenti 5 valori, per inviarli tramite form potremmo estrarli tutti e associarli a 5 differenti campi nascosti. Abbiamo però a disposizione serialize():
$serial = serialize($array);
Da cui otteniamo una versione archiviata come questa:
a:5:{i:0;s:1:"a";i:1;s:1:"b";i:2;s:1:"c";i:3;s:1:"d";i:4;s:1:"e";}
Come sarà possibile notare, la stringa contiene tutti i valori dell'array e i rispettivi numeri indice. Una volta inviato tramite form questo valore, contenuto semplicemente nella variabile $serial, sarà possibile deserializzare la variabile e riottenere tutti i valori dell'array grazie alla funzione unserialize(); provate per esempio ad eseguire questo semplice codice:
<?php
$array = array("a","b","c","d", "e");
$serial = serialize($array);
$data = unserialize($serial);
foreach($data as $val)
{
echo $val.'<br>';
}
?>
|