Tengo que hacer un programa en PHP de control y comparación de fechas que me da problemas

En la aplicación que estoy haciendo tengo que trabajar con fecha, comprobarlas, comparalas con otras.. Etc.Uso la función in_array, para mirar si una fecha esta dentro de ese array donde tengo guardadas otras, y al ejecutar, a veces me funciona, pero si le voy a la página anterior y después vuelvo a esta,, en fin que con los mismos datos a veces me da este erro y a veces m funciona y no se por que, el error es el siguiente:
Hora
0
Warning: in_array(): Wrong datatype for second argument in C:\Archivos de programa\Apache Group\Apache2\htdocs\saci\Cita_CMC1bis2.php on line 276
Y el código es este:
function dividir($fCitaI, $fCitaF, $mat){
$b = count($mat);
$seg10Min = 60 * 10;
$fCitaI = $fCitaI - $seg10Min ;
$fCitaF = $fCitaF - $seg10Min ;
$colum = $_SESSION['columnas'];
$filas = $_SESSION['filas'];
global $matriz;
global $iter;
$matriz= array();
while ($fCitaI<$fCitaF) {
$fCitaI += $seg10Min;
$hora = strftime("%H:%M:%S",$fCitaI);
echo addArray($matriz, $iter, $hora);
$iter +=1;
}//fin WHILE
$tamano =$iter;
?>
<TABLE BORDER ="1" align="center" CELLPADDING="2" CELLSPACING="2">
<TR ALIGN="CENTER" BGCOLOR="YELLOW">
<TD></TD>
<TD>HORA</TD>
</TR>
<?php
for($i=0; $i<$tamano; $i++){
echo "<TR ALIGN='CENTER'>";
echo "<TD BGCOLOR='yellow'>$i</TD>";
//ESTA ES LA LINEA DONDE DA EL ERROR
if (in_array($matriz[$i], $mat)){
echo "ENCONTRO EN EL ARRAY CONSUL:".$matriz[$i];
echo "<TD BGCOLOR='red'>".$matriz[$i]."</TD>";
}//fin if
else{
echo "<TD><a href='Cita_CMC2.php?hr=$matriz[$i]'>".$matriz[$i]."</a></TD>";
}//fin else
echo "</TR>";
}//fin for
?>
</TABLE>
<?php
}//FIN FUNCION DIVIDIR
Espero no haberte liado y haberme explicado. No entiendo porque a veces lo hace bien y a veces da error y estoy un poco estancada en esto.
Respuesta
1
Por lo que puedo ver, el problema parece estar con el array $mat, que cuando vuelves a cargar la página está sin definir. Quizá tienes que revisar donde creas la variable $cons.
En tu código veo la siguiente línea:
echo addArray($cons, $filas, $campo);
Donde $filas no se si la tienes definida. Quizá sea $_SESSION['filas']. Si esas dos variables no son la misma quizá te de errores dependiendo de la configuración de php. En algunos sistemas $_SESSION['filas'] y $filas es lo mismo, pero en otros no.
También veo que tienes lo siguiente:
$b = count($cons);
Puedes mostrar el contenido de $b para saber si se rellena ese array que luego pasas a la función dividir.
Prueba esas cosas y me comentas. Tienes que ir mirando dónde se define el array, por qué pasos sigue, donde se modifica, para averiguar porque cuando llega a la función in_array() está sin definir.
Hola:
Muchísimas gracias, ya solucione el problema gracias a tus consejos, tenia definido donde no debía el array $cons, por eso me daba error la segunda vez.
Muchísimas gracias, por tu tiempo, y por la ayuda, me ha sido muy útil.
Un saludo.
Scialfa
Necesitaría tener la llamada a la función dividir y el contenido del array.
Puedes hacer la siguiente prueba: justo antes de la línea que te da error, muestra el valor de las variables que uses. Por ejemplo usando lo siguiente:
echo "<br> Array mat: ";
print_r($mat);
echo "<br> Indice: $i";
echo "<br> Valor a buscar: {$matriz[$i]}";
De esta forma sabrás el contenido que tiene el array y si está dentro el valor que quieres buscar.
Ponme el código donde rellenas el array $mat y la página en la que lo haces, la llamada a dividir y la página en la que la ejecutas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas