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 ) )