secondo me ti conviene usare una roba tipo questa, che è simile alla tua ma molto più sintetica 
Codice PHP:
function assign_rand_value ($length = 6)
{
// inizializzo tutte le mie cose
$password = "";
$i = 0;
$possible = "023456789abcdefjkghimnopqrstuvwxyzABCDEFJKGHILMNOPQRSTUVWXYZ";
// aggiungo caratteri casuali a $password ciclando fino alla lunghezza massima imposta
while ($i < $length) {
$char = substr($possible, mt_rand(0, strlen($possible)-1), 1);
// inserisco l'ultimo carattere solo se non è ancora presente nella stringa della password
if (!strstr($password, $char)) {
$password .= $char;
$i++;
}
}
return $password;
}