Te lo explico paso a paso para que lo entiendas bien.
Código PHP:
$tmp = array(); //array temporal
foreach($resultado as $v)
{
$tmp[$v['Apellido']][] = $v; //$v es el array N dentro de $resultado ("emulando" que fuese una consulta).
}
el array $tmp[$v['Apellido']] crea una key con el apellido, de esta forma todos los nombres del apellido se encuentran en esa key. por ejemplo:
en $tmp['Pérez'] hay 2 arrays que serian Hugo y Paco que se apellidan Pérez.
ahora el otro bucle:
Código PHP:
foreach($tmp as $k => $v)
$tmp es el array creado con los datos, $k es el nombre de la key en el array (López y Pérez en este caso) y $v es el array ya agrupado por apellidos.
en el foreach interno
Código PHP:
foreach($v as $vv) //se recorre cada elemento del array "agrupado".
{
echo "<li>".$vv['Nombre']."</li>";
}
edito: añado una clase de ejempo que deja el codigo mas limpio y es mas comodo:
Código PHP:
Ver originalclass grupos
{
private $resultado;
function __construct()
{
$this->resultado = array(); }
public function insertar($k,$arr)
{
/*
Añade a $resultado['Apellido'] el nuevo elemento.
siendo Apellido el apellido de esa persona.
*/
$this->resultado[$k][] = $arr;
}
public function obtener($key)
{
/*
Obtener los datos agrupados en un array.
Para obtener solo los "Pérez", $key = Pérez.
Si el array no contiene la key $key retorna todos los nombres ordenados.
*/
{
return $this->resultado;
}
return $this->resultado[$key];
}
}
ejemplo de uso:
Código PHP:
Ver original$resultado = array(array('Nombre' => 'Luis','Apellido' => 'López'), array('Nombre' => 'Hugo','Apellido' => 'Pérez'), array('Nombre' => 'Pancho','Apellido' => 'López'), array('Nombre' => 'Pepe','Apellido' => 'Pérez'));
$g = new grupos();
//recorremos el array
foreach($resultado as $v)
{
//añadimos un nuevo elemento
$g->insertar($v['Apellido'],$v);
}
//obtener solo los López
//obtener solo los Pérez
//obtener todos
/*
no tiene pq ser asi, son solo ideas.