Me van a Perdonar ustedes si es que Molesto mucho,y en principal Explorer Pero es que estoy haciendo un modulo que pronto publicare aqui y les agradecere mucho, Mi duda ahora es la siguiente
tengo el siguiente array
$datos[0] = "ID||apellido||edad";
$datos[1] = "01||Castro||16";
$datos[2] = "02||Gomez||21";
$datos[2] = "03||Diaz||20";
Pues la idea es que me de un segundo array ordenano por el segundo campo que es nombre de forma alfabetica
$datos_ordenados[0] = "ID||apellido||edad";
$datos_ordenados[1] = "01||Castro||16";
$datos_ordenados[2] = "03||Diaz||20";
$datos_ordenados[2] = "02||Gomez||21";
Tengo algo asi mas o menos
$campos =shift (@datos);
// Como ya se que quiero ordenar por apellidos, y que el segundo campo es el apellido entonces hago esto
($id_n,$apellido_n,$edad_n) = split(/\|\|/, $campos);
cant_reg = @datos;
$i = 1;
foreach $data (@datos){
($id,$apellido,$edad) = split(/\|\|/, $data); # esto seria como decir $datos[i];
($id_temp,$apellido_temp,$edad_temp) = split(/\|\|/, @datos[$i]); # esto seria como decir $datos[i+1] el dato que le sigue
if ($apellido <= $apellido_temp) { #aqui estaria haciendo la comparacion segun el metodo de intercambion si elemento(i) > elemento(i+1)
$temp = $data;
$j = $i-1;
$datos[$j] = $datos[$i];
$datos[$i] = $temp; #acabo de acer el intercambio, y asi continuara leyendo cada uno de los elementos y me los ordena
unshift @datos_ordenados, ($id."||".$apellido."||".$edad); # realmente esto no es que haga nada en si
}else{
push { @datos_ordenados, ($id."||".$apellido."||".$edad); # esto creo que menos
}
$i++;
}
unshift @datos, ($id_n."||".$apellido_n."||".$edad_n);
unshift @datos_ordenados, ($id_n."||".$apellido_n."||".$edad_n);
// Pero les aseguro que tengo algo malo ahi si uso en metodo de intercambio de burbuja que no tengo muy en claro como implementarlo ahi.
De todas manera el algoritmo me haria que @datos se ordenara el solo o eso pretendo, pero si me gustaria que me quedara ordenado en @datos_ordenados segun el campo que yo quiera en este caso use el apellido.