El caso es simple: Tenemos un arreglo y queremos enviarlo a otro script de PHP. Supongamos que el arreglo alberga una docena de elementos. Si hiciéramos un formulario con doce elementos tipo «hidden», y lo enviásemos, sería muy tedioso. ¿Y si el arreglo tiene mucho más que doce elementos?.
Es mucho más simple si convertimos nuestro arreglo php en una cadena de texto, lo enviamos por u formulario html, y el script que lo recibe convierte la cadena de texto nuevamente en un arreglo.
Al caso, tenemos un arreglo de muchos elementos:
1 2 3 4 | $array['elemento1'] = 16; $array['elemento2'] = 'cadena de texto'; //... y así $array['elementoX'] = 'lo que sea'; |
Lo que haremos será construir dos funciones que nos facilitarán la vida. La primera se llamará «arrayToString» y servirá para convertir cualquier arreglo a una cadena de texto:
1 2 3 4 5 6 7 | function arrayToString($array) { $tmp = serialize($array); $tmp = urlencode($tmp); return $tmp; } |
La otra función, como probablemente presumáis, se llamará «stringToArray» y hará precisamente el procedimiento contrario:
1 2 3 4 5 6 7 8 | function stringToArray($array) { $tmp = stripslashes($array); $tmp = urldecode($tmp); $tmp = unserialize($tmp); return $tmp; } |
Podéis poner esas funciones en un archivo e incluirlas mediante la funcion «include» en cualquier script que necesitéis, y valla que ahorramos trabajo. Ahora veamos un ejemplo:
1 2 3 4 5 6 | $array = arrayToString($array);
?>
<form method="post" action='recibe.php'>
<input type="hidden" name="txt_array" value="<?php echo $array; ?/>">
<input type="submit" value="Enviar"/>
</form> |
Y en recibe.php lo manejamos:
1 2 | $array = stringToArray($_POST['txt_array']); echo $array['elemento1']; //16 |
Bueno, espero que os sea útil. Saludos.