Aunque había pensado publicar «como hacer una encuesta en la que no pueda votar ni dios para así poder inventarte el resultado tranquilo» no lo haré porque se me han adelantado los del diario ABC. En lugar de eso he pensado que a alguien podría interesarle una función que ordene un array multidimensional por un campo en concreto.
La función en si recibirá tres parámetros: el array, el nombre del campo y un valor booleano que indique si se querrá en orden inverso o no. Podéis ver este ejemplo de código:
function orderMultiDimensionalArray ($array, $campo, $invertir) { $posicion = array(); $newRow = array(); foreach ($array as $key => $row) { $posicion[$key] = $row[$campo]; $newRow[$key] = $row; } if ($invertir) { arsort($posicion); } else { asort($posicion); } $arrayRetorno = array(); foreach ($posicion as $key => $pos) { $arrayRetorno[] = $newRow[$key]; } return $arrayRetorno; }
La función asort ordena un array por los valores que contiene en orden de menor a mayor (si hay valores numéricos los pondrá antes que los alfabéticos). El caso de arsort es el mismo sólo que inverso, ordena de mayor a menor.
Ya véis que es sencillo y no tiene mucha ciencia. Existe también la función ksort (con su versión «reverse», la función krsort) que también ordena, pero en lugar de ordenenar por el valor lo hace por el índice.
La encuesta no la he creado aún pero ,felicidades por tu anuncio si muy sutil esa crítica al diario abc
gracias por la información. Quería comentarte que tienes un error en la función en el parámetro $position que se le pasa al foreach, esta declarado previamente como $posicion. Si ejecutas tu funcion tal cual devuelve error el interprete de php. Saludos
Gracias por tu aviso, luego lo corrijo.