Autor Zpráva
Ladha
Profil *
Dobrý den,

zajímalo by mě jak se dá vytvořit v PHP něco jako generátor řetězců, který by mi vyhazoval nejdříve a, b, c, d, .., z a potom by jel zase od začátku tak že by přidal jeden nový znak, takže aa, ab, ac, ad, .., az, ba, bb ...

jde to vytvořit nějak jednoduše?

Děkuji;)
Alphard
Profil
<?php
$ar = range("a", "z");

function vypis($hl, $s, &$ar)
{
  if ($hl)
  foreach($ar as $char)
  {
    $char = $s.$char;
    vypis($hl-1, $char, $ar);
  }
  else
  {
    echo $s."<br>";
  }
}

for($i=1; $i<=3; $i++)
  vypis($i, "", $ar);
?>


Kvůli té (zbytečné) referenci tento script ale vyžaduje PHP 5. Avšak lze ho snadno přepsat do podoby s globální proměnnou.
imploder
Profil
Ladha
Pokud bys chtěl něco škálovatelnějšího, s čím by sis mohl pohrát, třeba využiješ tohle:
<?php 
function zapis_cislici($cislice, &$buffer) {
   $buffer = chr(ord('a') + $cislice) . $buffer;
}

function zobraz_cislo($cislo, $zaklad, &$buffer) {
  while(true) {
    $cislice = $cislo % $zaklad;
    zapis_cislici($cislice, $buffer);
    if($cislo < $zaklad) break;

    $cislo = $cislo / $zaklad;
  }
}
?>

<html><body>
<?php
for($n=0; $n<1000; $n++) {
  $slovo = "";
  zobraz_cislo($n, 26, $slovo);
  echo $n.": ".$slovo."<br>";
}
?>
</body></html>


Je to obecná funkce na zobrazení přirozeného čísla v určité soustavě - v tomto případě 26-kové - tolik je písmen v angl. abecedě. Funkce zobraz_cislo se dá jednoduše změnit aby šly písmena s diakritikou, zobrazovaly se místo nich obrázky, atd., obrátit pořadí písmen ve slově (tj. připojit číslici (tedy písmeno) místo zleva zprava) - co tě napadne.
Ladha
Profil *
Díky moc ;)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: