PHP: Ordenació d’un array de 2 dimensions

per Xavi el 9 de novembre de 2006, sota Informàtica i Tecnologia amb 1.430 lectures

PHPBé, no és tan simple… es tracta d’ordenar un array de 2 dimensions segons un camp de la segona dimensió. Per explicar-me, poso un exemple: Tenim varis arrays on posem el nom i el cognom de persones, tots ells dins d’un altre array, quedant com un recordset de fitxes de persones.

[php]

$array = array(

array(”nom” => “pepe”, “cognom” => “garcia”),

array(”nom” => “joan”, “cognom” => “martinez”),

)

[/php]

I volem ordenar aquest array de 2 dimensions segons el cognom. Però podem simplificar el tema i usar el asort() que ordena mantenint les claus dels elements… com? Doncs molt fàcil:

Primer de tot, muntarem un array simple amb els elements que volem ordenar, els cognoms, mantenint l’ordre:

[php]

$array_aux = array();
foreach($array as $pos => $element)
{
$array_aux[]=$element['cognom'];
}

[/php]

Ara tenim un array simple, que ordenarem mantenint les claus de cada element:

[php]

asort($array_aux);

[/php]

I ara que el tenim ordenat, muntarem l’array final amb les fitxes senceres, usant l’ordre que té l’array auxiliar:

[php]

$array_final = array();
foreach($array_aux as $key => $value)
{
$array_final[]= $array[$key];
}

[/php]

I ja el tenim ordenat. De fet, podriem escriure una funció genèrica per fer aquest tipus d’ordenació:

[php]

function sort2Darray($array, $clau)
{
if(!is_array($array) || count($array)==0 || is_null($clave) || $clave==”) return false;

$array_aux = array();
foreach($array as $pos => $element)
{
$array_aux[]=$element[$clau];
}

asort($array_aux);

$array_final = array();
foreach($array_aux as $key => $value)
{
$array_final[]= $array[$key];
}

return $array_final;
}

[/php]

La única cosa que he posat de mes és una comprovació de que els paràmetres passats siguin els passats…

Salut!

:

Deixa un Comentari