Ordenar una array de fechas en PHP

Se nos proporciona una array que consta de varias fechas en formato (Ymd). Tenemos que escribir un programa en PHP para ordenar todas las fechas presentes en la array en orden decreciente.

Ejemplos:

Input : array("2018-06-04", "2014-06-08", "2018-06-05")
Output : 2018-06-05  2018-06-04  2014-06-08

Input : array("2016-09-12", "2009-09-08", "2009-09-09")
Output : 2016-09-12  2009-09-09  2009-09-08

Para resolver este problema en C/C++/Java o cualquier otro lenguaje de programación de propósito general, tenemos que comparar las fechas según el año, luego el mes y, finalmente, según los días, almacenándolas en cualquier estructura o en cualquier otra estructura de datos deseada. Pero en PHP este problema parece ser muy sencillo si aplicamos la función strtotime(). La función strtotime() es una función de PHP que cambia una fecha determinada en cualquier formato en una marca de tiempo que es un número entero grande por naturaleza y luego, mientras ordenamos la array, podemos usar fácilmente el comando PHP | usort() mediante la definición de una función de comparación. La función de comparación aceptará dos argumentos de fecha que se convertirán en una marca de tiempo entera usando la función strtotime() y luego se compararán con la fecha de clasificación según el valor de la marca de tiempo entera.

Funciones incorporadas utilizadas:

  • strtotime() : esta función cambia una string de fecha dada en una marca de tiempo (valor int grande).
  • usort() : esta función ordena la array dada según una función de comparación definida por el usuario.

A continuación se muestra la implementación de PHP de la idea anterior:

<?php
// PHP program to sort array of dates 
  
// user-defined comparison function 
// based on timestamp
function compareByTimeStamp($time1, $time2)
{
    if (strtotime($time1) < strtotime($time2))
        return 1;
    else if (strtotime($time1) > strtotime($time2)) 
        return -1;
    else
        return 0;
}
  
// Input Array
$arr = array("2016-09-12", "2009-09-06", "2009-09-09");
  
// sort array with given user-defined function
usort($arr, "compareByTimeStamp");
  
print_r($arr);
  
?>

Producción :

Array
(
    [0] => 2016-09-12
    [1] => 2009-09-09
    [2] => 2009-09-06
)

Publicación traducida automáticamente

Artículo escrito por Shivam.Pradhan y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *