jueves, 31 de julio de 2014

Cambiar formato de fechas de ISO a Latino o viceversa

Una par de lineas útiles para cuando estas trabajando en sistemas de bases de datos que necesitan mostrar fechas en formato latino pero deben ser almacenadas en formato ISO (MySql, PostgreSQL y otros).


De ISO a Latino:
$strFechaLatina = implode('-',array_reverse(explode('-',$strFechaISO)));

De Latino a ISO:
$strFechaISO = implode('-',array_reverse(explode('-',$strFechaLatina)));


Bonus:
Para convertir fechas en donde los dígitos están separados por barras, puntos o guiones ("/",".","-") se puede reemplazar la función explode y usar en su lugar preg_split.

$strFechaISO = implode('-',array_reverse(preg_split('/[-.\/]/',$strFechaLatina


Para que estas rutinas funcionen las fechas de entrada deben estar debidamente validadas.

miércoles, 30 de julio de 2014

Ordenando un arreglo de objetos en PHP

Recientemente me tocó realizar una función para ordenar un arreglo de elementos en PHP con la particularidad de que cada elemento es un objeto definido. Cada objeto del arreglo representaba un artículo de un catálogo y se debía ordenar el arreglo por la propiedad "precio" de cada objeto, de mayor a menor.

Al principio estuve tentado a repasar el algoritmo básico Quicksort y hacerle alguna modificación para trabajar con arreglos de objetos pero luego recordé que PHP tiene una función bien práctica para esto llamada usort.

bool usort ( array &$array , callable $value_compare_func )

La funcion usort recibe como parámetros un arreglo de cualquier tipoy el nombre de una función personalizada que se encargará de realizar la comparación interna de cada posición del arreglo. Suponiendo que nuestro arreglo se llama "artículos" y cada posición del arreglo es un objeto con una propiedad llamada "precio", podemos ordenar nuestro arreglo de menor a mayor de la siguiente manera:


function compararArticulos($a, $b){
    if ($a->precio == $b->precio){
        return 0;
    }
    return ($a->precio < $b->precio) ? -1 : 1;
}

usort($articulos, "compararArticulos");


Luego de esto ya es más fácil aplicar el ejemplo para ordenar arreglos multidimensionales.

Iniciando un paseo por la Programación Web

Hoy comienzo este nuevo blog con deseos de compartir mi experiencia de varios años en desarrollo de sistemas mediante PHP, MySQL, HTML, CSS, Javascript y un montón de tecnologías que descubrirás poco a poco en cada publicación.