Ver Mensaje Individual
  #4 (permalink)  
Antiguo 13/12/2005, 07:37
masterjail
 
Fecha de Ingreso: octubre-2004
Ubicación: Cork (Irlanda)
Mensajes: 161
Antigüedad: 19 años, 6 meses
Puntos: 1
Código:
//---------------------------------------------------------------------------------------------//
// Ordena un array respecto la posición que ocupa un valor de una clave en otro array.         //
// Los dos arrays deben tener la misma clave y, además, sus valores no pueden estar repetidos. //
//---------------------------------------------------------------------------------------------//
// - $desordenado: array a ordenar.                                                            //
// - $ordenado   : array a partir del cual ordenaremos el desordenado.                         //
// - $clave      : clave del array ordenado a partir de la cual ordenar el desordenado.        //
//---------------------------------------------------------------------------------------------//
function ordenar($desordenado,$ordenado,$clave){

  // creamos un array en donde formaremos el resultado:
  $reordenado = Array();

  // recorremos el array ordenado:
  foreach ($ordenado as $k => $v){

    // tomamos el valor que hay en la clave especificada:
    $valor = $v[$clave];

    // buscamos este valor en el array desordenado:
    $pos = 0;
    $encontrado = false;
    while (($pos < sizeof($desordenado)) && (!$encontrado)){
      $encontrado = ($desordenado[$pos][$clave] == $valor);
      if (!$encontrado) $pos++;
    };

    // suponemos que siempre encontraremos una coincidencia:
    array_push($reordenado,$desordenado[$pos]);
  };

  // liberamos recursos:
  unset($desordenado,$ordenado,$clave,$k,$v,$valor,$pos,$encontrado);

  // devolvemos el array reordenado:
  return $reordenado;
};