Tema: FAQ's de PHP
Ver Mensaje Individual
  #21 (permalink)  
Antiguo 03/12/2002, 20:06
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Tema: Manejo arrays (arreglos, matrices ..)

Pregunta: Como paso un array de un script.php a otro.php

Respuesta:

Hay que serializar el array para enviarlo por el URL o en un formulario en un campo "hidden" ... Y, en el script que reciba el array debera de des-serializarlo.

A todo esto, es recomendable eliminar los slahes (\ barra invertida) que se generan si usamos magic_quotes_gpc a ON y codificar las variables con urlencode() para eviatar problemas con cartacteres en nuestros arrays tipo: puntos, comillas y otros caracteres.

enviar_array.php
Código PHP:
<?
function array_envia($array) {

    
$tmp serialize($array);
    
$tmp urlencode($tmp);

    return 
$tmp;
}

$array=array("algo","nose","otracosa");
$array=array_envia($array);

// Usando un formulario y campo hidden.
echo <<<HTML
<form action="recibir_array.php" method="POST">
   <input name="array" type="hidden" value="$array">
   <input name="enviar" type="submit" value=" Enviar ">
</form>
HTML;

// Usando un link (URL).
echo "<a href=\"recibir_array.php?array=$array\">pasar array</a>";
?>
recibir_array.php
Código PHP:
<?
function array_recibe($url_array) {
    
$tmp stripslashes($url_array);
    
$tmp urldecode($tmp);
    
$tmp unserialize($tmp);

   return 
$tmp;
}


$array=$_GET['array'];
 
// el método de envio usado. (en el ejemplo un link genera un GET. En el formulario se usa POST podria ser GET tambien ...)

$array=array_recibe($array);

foreach (
$array as $indice => $valor){
echo 
$indice." = ".$valor."<br>";
}
?>
Ahi en recibir_array.php tienes un ejemplo de como recorrer el array que has enviado . igualmente puedes acceder por su indice: $array[indice] ...

Si usasemos un formulario para enviar nuestra array .. solo tendriamos que usar un campo hidden común de formulario y alplicar la funcion array_envia().


Un saludo,

Última edición por Cluster; 08/01/2003 a las 18:18