Pasar un array

Hola:
¿Qué tal todo?, en primer lugar gracias por leer mi pregunta. El problema que tengo es el siguiente, tengo una serie de funciones con horas, y una de ellas es dividir un intervalo, de 10 en 10 minutos, y guardar los resultados (es decir las horas que m va dando) en un array y que este array lo pueda usar fuera de la función que yo llamo dividir. Lo de dividir las horas m funciona, poer lo del array no, al final solo m muestra la ultima hora, es como si en vez de ir guardando las horas en distintas posiciones, m fuera pisando siempre la misma. No se si m explico. El trozo de código en el que hago esto es el siguiente.
function dividir($fCitaI, $fCitaF){
echo "ENTRA EN DIVIDIR!!";
$seg10Min = 60 * 10;
$fCitaI = $fCitaI - $seg10Min ;
$fCitaF = $fCitaF - $seg10Min ;
echo "COLUMNAS1".$_SESSION['columnas'];
echo "FILAS1".$_SESSION['filas'];
$colum = $_SESSION['columnas'];
$filas = $_SESSION['filas'];
echo "COLUMNAS: $colum";
echo "FILAS : $filas";
$iter = 0;
global $matriz;
global $iter;
while ($fCitaI<$fCitaF) {
global $iter;
global $matriz;
$matriz = array();
echo "ITER DENTRO DEL WHILE ANTES DE ANDA= $iter \n";
echo "ENTRA EN EL WHILE DE DIVIDIR";
$fCitaI += $seg10Min;
$hora = strftime("%H:%M:%S",$fCitaI);
echo "HORA: $hora\n";
$matriz[$iter] = $hora;
//$matriz=array("$iter"=>"$hora");
echo "LOS VALORES DE LA MATRIZ VAN SIENDO en $iter: $matriz[$iter] \n";
$a= $iter;
$iter +=1;
echo "LA MATRIZ TRAS AUMENTAR ITER ES $matriz[$a]" ;
//return ($iter);
}//fin WHILE
$tamano =$iter;
echo "TAMAÑO DE LA MATRZ(1): $tamano = &iter;
//echo "la matriz en la primera posicion tiene: ".$matriz[0];
}//FIN FUNCION DIVIDIR
Llevo bastantes días liada con esto y probé de mmil maneras, y no hay forma, si pudieras ayudarme te lo agradecería muchísimo, porque estoy bastante atascada y se m echa el tiempo encima.
Muchísimas gracias por tu tiempo.
Un saludo.
Nebraska
Respuesta
1
Perdona por el tiempo que he tardado en responder.
En tu código no entiendo la parte donde usas las variables de sesión Filas y Columnas, ya que solo muestras su resultado pero no las usas para nada más.
Te propongo el siguiente código:
function dividir($fCitaI, $fCitaF){
global $matriz;
global $iter;
echo "ENTRA EN DIVIDIR!!";
$seg10Min = 60 * 10;
$fCitaI = $fCitaI - $seg10Min ;
$fCitaF = $fCitaF - $seg10Min ;
$iter = 0;
$matriz = array();
while ($fCitaI<$fCitaF) {
$fCitaI += $seg10Min;
$hora = strftime("%H:%M:%S",$fCitaI);
echo "HORA: $hora\n";
$matriz[$iter] = $hora;
echo "LOS VALORES DE LA MATRIZ VAN SIENDO en $iter: {$matriz[$iter]} \n";
$a = $iter;
$iter ++;
echo "LA MATRIZ TRAS AUMENTAR ITER ES {$matriz[$a]}";
} //fin WHILE
$tamano = $iter;
echo "TAMAÑO DE LA MATRZ(1): $tamano = &iter";
echo "EL CONTENIDO DE LA MATRIZ ES: ";
print_r($matriz);
}//FIN FUNCION DIVIDIR
Por lo que he podido ver, tenias la declaración de $matriz como array dentro del bucle por lo que eliminabas el contenido anterior y se quedaba sólo el último elemento insertado. Tienes que sacar la declaración fuera.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas