Portál AbcLinuxu, 27. dubna 2024 01:48


Dotaz: PHP - jak vygenerovat náhodné znaky uložené v proměnné

6.11.2014 12:49 Jarda
PHP - jak vygenerovat náhodné znaky uložené v proměnné
Přečteno: 205×
Odpovědět | Admin
Ahoj. Neexistuje nějaká funkce, která dokáže vygenerovat náhodné znaky které jsou uloženy v nějaké proměnné? Díky
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Tarmaq avatar 6.11.2014 13:04 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: PHP - jak vygenerovat náhodné znaky uložené v proměnné
Odpovědět | | Sbalit | Link | Blokovat | Admin
Takovou funkci si musis napsat. Jakeho typu je ta promenna? Retezec, pole nebo co? Pokud pole, tak napr. nejak takto:
$nahodny_znak = $pole_znaku[rand(0, count($pole_znaku) - 1)];
Napsal jsi toho docela malo, takze tezko hadat kolik znaku ma mit vygenerovany rezec atp.
Don't panic!
6.11.2014 13:13 Jarda
Rozbalit Rozbalit vše Re: PHP - jak vygenerovat náhodné znaky uložené v proměnné
Ahoj, díky za info, doplňuji..
jestli to bude pole ne řetězec mi je jedno,
počet znaků je 22
počet znaků na výběr je 9
Děkuji
Tarmaq avatar 6.11.2014 13:30 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: PHP - jak vygenerovat náhodné znaky uložené v proměnné
function foo($length)
{
    $rv = '';
    $chars = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i');
    $limit = count($chars) - 1;
    for ($i = 0; $i < $length; $i++) {
        $rv .= $chars[rand(0, $limit)];
    }
    return $rv;
}
echo foo(22);
Jinak to pole s temi znaky je dobre mit nekde v nejake tride jako statickou promennou, pokud to generovani probiha vicekrat.. Lze take pouzit retezec a pote ho splitnout na pole... Zalezi na okolnostech a preferenci. Jo a taky lze misto rand() pouzit mt_rand()..
Don't panic!
6.11.2014 13:42 Jarda
Rozbalit Rozbalit vše Re: PHP - jak vygenerovat náhodné znaky uložené v proměnné
Děkuji moc za pomoc a funkci.

Funkci mt_rand() nevyužiji, jelikož se jedná vždy o stejný počet znaků. Co by mě ještě ale moc zajímalo je inicializace proměnné $rv. použil jsi
$rv = '';
Proč není správné použití
$rv = null;
nebo
$rv = false; 
Děkuji
Tarmaq avatar 6.11.2014 14:55 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: PHP - jak vygenerovat náhodné znaky uložené v proměnné
Protoze se jedna o string, nema smysl inicializovat jako null nebo false.
Don't panic!
7.11.2014 15:59 Lucius
Rozbalit Rozbalit vše Re: PHP - jak vygenerovat náhodné znaky uložené v proměnné
kdyz pouzije:

array_rand ( $chars )

namisto:

rand(0, $limit)

tak usetri ten radek s $limit = count($chars) - 1;

:-)
7.11.2014 12:26 Lucius
Rozbalit Rozbalit vše Re: PHP - jak vygenerovat náhodné znaky uložené v proměnné
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nebo pokud by to melo byt bez poli tak ta fu muze byt zhruba

function random_string($str='',$max = 20){

	return (strlen($str) ? str_shuffle ( str_pad('', $max, $str) ):'');

}
7.11.2014 16:24 Lucius
Rozbalit Rozbalit vše Re: PHP - jak vygenerovat náhodné znaky uložené v proměnné
a takto to je lepsi:
function random_string2($str='',$max = 20){

	$strLen = 	strlen($str);
	return ($strLen ? substr(str_shuffle ( str_pad('',ceil($max/$strLen)*$strLen, $str)),0,$max ):'');

}

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.