PHP – Array – Sort
Función que nos permite ordenar un array por varios campos, tanto de forma ascendente, descendente, de forma natural o insensible a los acentos.
/**
* Devuelve un array ordendo por las columna o columnas que queramos
*
* @return mixed
*/
function sortMultiValue()
{
$args = func_get_args();
$data = array_shift($args);
foreach ($args as $n => $field) {
if (is_string($field)) {
$tmp = array();
foreach ($data as $key => $row) {
$tmp[ $key ] = $row[ $field ];
}
$args[ $n ] = $tmp;
}
}
$args[] = &$data;
call_user_func_array('sortMultiValue', $args);
return array_pop($args);
}
Ejemplos de como utilizar esta función
/* Ordenación por un campo */ sortMultiValue($arr_tmp, 'estado', SORT_DESC);
/* Ordenación por varios campos */
sortMultiValue($arr_tmp,
'visitas', SORT_ASC | SORT_NATURAL | SORT_FLAG_CASE,
'llamadas', SORT_ASC | SORT_NATURAL | SORT_FLAG_CASE);
Array
(
[0] => Array
(
[cliente] => CLIENTE 1
[asociacion] => ASOC 1
[estado] => CANDIDATO
[comercial] => NOMBRECOM
[visitas] => 0
[llamadas] => 5
[emails] => 0
[cliid] => d4251ec1-1d72-2896-605b-55c33995b6cd
[acid] => 626b079c-e7e6-8f6f-d9c1-55c338eb09ab
)
[1] => Array
(
[cliente] => CLIENTE 20
[asociacion] => ASSOC 20
[estado] => CANDIDATO
[comercial] => NOMBECOM
[visitas] => 0
[llamadas] => 0
[emails] => 1
[cliid] => d42513ee-a68a-1555-6546-55c33665e939
[acid] => 4ea16685-4f91-cc22-dd0a-55c33406fa2e
[llamdas] => 1
)
[2] => Array
(
[cliente] => CLIENTE 5
[asociacion] => ASSOC 10
[estado] => CANDIDATO
[comercial] => ORTO
[visitas] => 1
[llamadas] => 4
[emails] => 2
[cliid] => f329b20a-eeef-10a0-17e4-55c1e7f30deb
[acid] => 56c2a30f-a897-60bc-0c6a-55c1dbd00647
)
)
