Blog Reacción Estudio

¡Tu zona de aprendizaje!

Ordenar array multidimensional por un campo con PHP

La siguiente función nos permite ordenar un array multidimensionar por un campo, además podemos indicarle si lo queremos ordenar de forma ascendente o descendente.

    function orderMultiDimensionalArray ($toOrderArray, $field, $inverse) {  
        $position = array();  
        $newRow = array();  
        foreach ($toOrderArray as $key => $row) {  
                $position[$key]  = $row[$field];  
                $newRow[$key] = $row;  
        }  
        if ($inverse) {  
            arsort($position);  
        }  
        else {  
            asort($position);  
        }  
        $returnArray = array();  
        foreach ($position as $key => $pos) {       
            $returnArray[] = $newRow[$key];  
        }  
        return $returnArray;  
    }  

La función es muy sencilla, $toOrderArray es el array que vamos a ordenar, $field es el campo por el que queremos ordenar el array y $inverse es la forma en el que queremos ordenarlo, si le ponemos el valor false lo hará de forma ascendente y si le ponemos true de forma descendente.

Aquí os dejo otra función que ordena alfabéticamente un array multidimensional por el campo indicado:

function subval_sort($a,$subkey) 
{
     foreach($a as $k=>$v) {
          $b[$k] = strtolower($v[$subkey]);
     }
     asort($b);
     foreach($b as $key=>$val) {
          $c[] = $a[$key];
     }
     return $c;
}