Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/05/2004, 13:00
belce666
 
Fecha de Ingreso: abril-2004
Ubicación: Buenos Aires
Mensajes: 7
Antigüedad: 20 años
Puntos: 0
Matriz - Ordenamiento

Buenas !!!! Necesitaría una mano con una matriz multidimensional, que una vez cargada se muestra en pantalla como grilla de datos. Lo que estoy buscando es poder ordenarla por cualquiera de sus columnas, pero que el algoritmo de ordenamiento me sirva para cualquier matriz de N números de columnas o filas. El punto está en que no sé cómo pasar los parámetros.

Acá les copio el fuente que tengo hasta ahora.

<?PHP

// The multi-dimensional array, as returned by
// looping through mysql_fetch_array(), etc.
$arr[1] = array("volume" => "67", "edition" => "3", "star" => "104");
$arr[2] = array("volume" => "86", "edition" => "1", "star" => "103");
$arr[3] = array("volume" => "85", "edition" => "6", "star" => "102");
$arr[4] = array("volume" => "87", "edition" => "2", "star" => "101");
$arr[5] = array("volume" => "81", "edition" => "8", "star" => "105");
$arr[6] = array("volume" => "65", "edition" => "7", "star" => "106");

// We want to ORDER BY volume DESC, edition ASC.
// We have an array of "rows", but array_multisort()
// requires an array of "columns" instead. Here's how
// to get the arrays of columns.
foreach ($arr as $key => $row)
{
$volume[$key] = $row["volume"];
$edition[$key] = $row["edition"];
$star[$key] = $row["star"];
}

// now arr is ordered

if (isset ($indice))
{
array_multisort($indice, SORT_DESC, $arr);
}
else
{
array_multisort($volume, SORT_ASC, $arr);
}

echo ("<table border=1 align='center'>
<tr>
<form method='post' action='ordenarmatriz.php' name='form'>
<inpit type='hidden' name='indice' value='0'>
<inpit type='hidden' name='array' value='". $arr ."'>
<inpit type='hidden' name='bandera' value='si'>
<td><input type=submit name='Volumen' value='". $arr[1] ."'></td>
<td><input type=submit name='Edicion' value='". $arr[2] ."'></td>
<td><input type=submit name='Star' value='". $arr[3] ."'></td>
");

while (list($k,$v) = each($arr))
{
$v2= $v;
//print_r($v);
while (list($k3,$v3) = each($v2))
{
if (($v3 >= 20) and ($v3 <=90))
{
echo ("<tr><td><font color='red'>");
printf('%s ',$v3);
}
elseif ($v3 >= 100)
{
echo("</font></td><td><font color='green'>");
printf('%s',$v3);
echo("</font></td></tr>");
}
elseif (($v3 <= 20) and ($v3 >= 0))
{
echo ("</font></td><td><font color='blue'>");
printf('%s ',$v3);
}
}
}
echo(" </form>
</tr>
</table>
");
?>



Muchas gracias.