Utilizando funciones anónimas y closures para ordenar un array en PHP

Las funciones anónimas y closures son relativamente nuevas en PHP, y son una adición que nos puede ser muy útil.

Si necesitas ordenar los elementos de un array de forma personalizada (es decir, con una función de comparación definida por el usuario como en el caso de usort, uasort o ksort) puedes utilizar una función anónima y closures para hacerlo de forma muy fácil y directa.

// $elements tiene los elementos sin ordenr

// $order tiene el orden de los elementos
// debe estar definida en el scope superior
$order = get_option('user_defined_order');

usort( $elements, function($a, $b) use ($order) {
	$a_index = array_search($a->ID, $order);
	$b_index = array_search($b->ID, $order);
	if ( $a_index > $b_index ) return 1;
	if ( $a_index < $b_index ) return -1;
	return 0;
});