Zufallsbuchstabe
Daniel Jehnes
- php
Gibt es in PHP eine Funktion, die einen zufälligen Buchstaben ausgibt?
mt_srand((double)microtime()*1000000);
$zeichen = "abcdefghijklmnopqrstuvwxyz".
"ABCDEFGHIJKLMNOPQRSTUVWXYZ";
buchstabe = $zeichen[mt_rand(0,strlen($zeichen))];
你好 AllesMeins,
mt_srand((double)microtime()*1000000);
Besser: mt_srand((double)(microtime() ^ posix_getpid()));
$zeichen = "abcdefghijklmnopqrstuvwxyz".
"ABCDEFGHIJKLMNOPQRSTUVWXYZ";
buchstabe = $zeichen[mt_rand(0,strlen($zeichen))];
Besser, weil definiert:
$buchstabe = $zeichen{mt_rand(0,strlen($zeichen))];
Der Zugriff auf einen String via [] ist nicht definiert und kann sich
jederzeit ändern:
=========================
Note: The behaviour of an automatic conversion to array is currently undefined.
<?php
$a = "1"; // $a is a string
$a[0] = "f"; // What about string offsets? What happens?
?>
Since PHP (for historical reasons) supports indexing into strings via offsets using the same syntax as array indexing, the example above leads to a problem: should $a become an array with its first element being "f", or should "f" become the first character of the string $a?
The current versions of PHP interpret the second assignment as a string offset identification, so $a becomes "f", the result of this automatic conversion however should be considered undefined. PHP 4 introduced the new curly bracket syntax to access characters in string, use this syntax instead of the one presented above:
<?php
$a = "abc"; // $a is a string
$a{1} = "f"; // $a is now "afc"
?>
再见,
克里斯蒂安
hi,
$zeichen = "abcdefghijklmnopqrstuvwxyz".
"ABCDEFGHIJKLMNOPQRSTUVWXYZ";
buchstabe = $zeichen[mt_rand(0,strlen($zeichen))];
auf $zeichen würde ich gleich verzichten, und stattdessen $zufallszahl im bereich von ord('a') bis ord('z') wählen (lassen).
anschließend liefert chr($zufallzahl) mir ein zeichen zwischen 'a' und 'z'.
wenn kleine und große buchstaben vorkommen können sollen, kann man jetzt noch mit einer zufallszwahl mit dem wert 0 oder 1 entscheiden, ob man strtoupper() auf das ergebnis anwenden will, oder alternativ - schöner - ob man auf $zufallszahl vor dem anwenden von chr() noch die differenz von ord('A')-ord('a') draufaddieren möchte.
gruß,
wahsaga
你好 wahsaga,
auf $zeichen würde ich gleich verzichten, und stattdessen $zufallszahl
im bereich von ord('a') bis ord('z') wählen (lassen).
In diesem Falle sicher besser, aber ich hatte bewusst darauf verzichtet,
weil die Methode Probleme bereitet, wenn man Lücken zwischen den Räumen
hat ;-) Spätestens, wenn $zeichen noch ()/;,.: und dergleichen enthalten
soll wirds nervig *g*
再见,
克里斯蒂安