Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/08/2009, 15:06
Avatar de ACX_POISON
ACX_POISON
 
Fecha de Ingreso: abril-2008
Ubicación: Talca-Chile
Mensajes: 750
Antigüedad: 16 años
Puntos: 7
Exclamación ayuda a detectar errores en funcion...

Gracias X leerlo

Amigos estuve con unos problemas al comparar fechas en formato dd/mm/aaaa
asi que decidi armar una funcion para este fin la cual recibe una arreglo con las fechas y devuelva la mayor de ellas y tambien puede devolver todo el array ordenado de menor a mayor.... como recien la arme les pido la pongan a prueba para mejorarla....

Código PHP:
<?php
//array con fechas
 
$fech[0]="28/02/2009";  
 
$fech[1]="28/03/2009";  
 
$fech[2]="28/01/2009"
 
$fech[3]="15/01/2060"
  
echo
"Fecha Mayor::".comparaNfechas($fech)."<br>";//llamo a funcion devuelve fecha
var_dump(comparaNfechas($fech,"/","array"));//devuelve array ordenado de menor a mayor
//************************
//by [email protected]
//07-08-2009
//v.:1.0
//************************
function comparaNfechas($fechas,$separador="/",$devolver="valor")
{
    
//inicializo variables
    
$debugX=false;//si esta TRUE, muestra una serie de mensaje por pantalla
    
$error=false;
    
$devolver=strtolower($devolver);//arreglo para comparar mejor
    
$msj_error="00".$separador."00".$separador."0000";//mensaje a mostrar si fecha mala
    //recorro fechas
    
foreach($fechas as $n =>$valor)
    {
        if(
$debugX){echo"$n -> $valor<br>";}
        
$aux=explode($separador,$valor);
        
//separo en partes la fechas
        
$aux_dia=$aux[0];
        
$aux_mes=$aux[1];
        
$aux_ano=$aux[2];
        if(
$debugX){
        echo 
"dia $aux_dia  mes $aux_mes  ano $aux_ano<br>";}
        if(!
checkdate($aux_mes,$aux_dia,$aux_ano))//compruebo la fecha
        

            if(
$debugX){echo"fecha Errornea";}
            
$error=true;
            break;
        }
        
$F[$valor]=gregoriantojd($aux_mes,$aux_dia,$aux_ano);//cuento los dias
    
}
    if(
$debugX){
        foreach(
$F as $n => $valor)
        {
            echo
"$n -> $valor <br>";
        }
    }
    if(!
$error)
    {
        
asort($F);//ordeno array
        
if($debuX){
        echo
"<br>";
        foreach(
$F as $n => $valor)
        {
            echo
"$n -> $valor <br>";
        }
        }
        
//realizo accion segun el valor a devolver
        
switch ($devolver)
        {
            case 
"valor":
                
end($F);
                
$valor=key($F);//obtengo clave de ultima posicion o mayor fecha
                
return($valor);
                break;
            case 
"array":
                return(
$F);
                break;
            default:
                
end($F);
                
$valor=key($F);
                return(
$valor);
                break;        
        }
    }
    else{return(
$msj_error);}
}
?>
Gracias...
espero sus comentarios y/o sugerencias
__________________
Me junto con los que Saben, Queriendo Saber.