Dieses Blog ist NOFOLLOW-frei!

Unique Random Zahlen mit PHP ermitteln

Heute mal wieder ein kleiner, aber nützlicher, Codeschnipsel in PHP. Man braucht ja oftmals in verschieden Scripten Zufallszahlen (dabei möchte ich gleich mal anmerken, statt rand() lieber mt_rand() verwenden, das funktioniert schneller und besser). Häufiger benötigt man auch zwei oder mehr verschiedene Zufallszahlen die nicht gleich sein dürfen, dafür dass man diese erhält sorgt der folgende Code Schnipsel:

1. $numbers = array();
2.  do
3.  {
4.   $rand = mt_rand(1, 100);
5.   if(!in_array($rand, $numbers))
6.    $numbers[] = $rand;
8.  } while(count($numbers) < 3);
9.
10.  list($first, $second, $third) = $numbers;

In Zeile 1 legen wir ein, noch leeres, Array mit dem Namen “$numbers” an. In Zeile 2 – 8 folgt dann eine do-while-Schleife in dieser generieren und speichern wir die unterschiedlichen Zufallszahlen. Dafür legen wir eine Variable “$rand” in Zeile 4 an, in dieser rufen wir die Funktion “mt_rand()” auf und speichern das Ergebnis der Funktion, dies ist in diesem Fall eine Random Zahl zwischen 1 und 100. In Zeile 5 prüfen wir mit einer IF-Abfrage und der Funktion “in_array($value,$array)” (diese Funktion prüft ob der Wert “$value” in “$array” enthalten ist) ob die generierte Random zahl bereits im Array “$numbers” enthalten ist, wenn nicht wird der Wert von “$rand” in “$numbers” gespeichert. Dann folgt in Zeile 8 der while Teil der Schleife in dem wir mit der Funktion “count($array)” prüfen wie viele Werte das Array (in diesem Fall “$numbers”) enthält. Wenn “count($array)” weniger ergibt als angegeben (im Beispiel 3) wird die Schleife erneut ausgeführt, wenn das Array bereits 3 Werte enthält (bitte dran denken das ein Array numerisch bei 0 anfängt, nicht bei 1) wird die Schleife beendet. In Zeile 10 werden dann mithilfe der Funktion “list()” die Werte aus “$numbers” als Variablen gespeichert, dieser Teil ist optional, man kann die Werte auch mit “$numbers[0]” – “$numbers[n]” abrufen.

Das Script müsst ihr an eure Bedürfnisse anpassen, einmal in Zeile 4 in der ihr angeben müsst in welchem Zahlenbereich die Zufallszahl generiert werden soll (mt_rand(1,100) liefert Zahlen zwischen 1 und 100, mt_rand(500,2000) würde Zahlen zwischen 500 und 2000 liefern) und dann noch in Zeile 8 angeben wie viele Werte $numbers enthalten soll (dann auch dran denken falls es verwendet wird die Variablen in Zeile 10 bei list() zu ergänzen. Das wars auch schon und ihr könnt euch nun beliebig viele unique Zufallszahlen generieren ;-)

Ich hoffe das meine Erklärung verständlich war und der ein oder andere den Code gebrauchen kann.

An dieser Stelle möchte ich mich auch noch einmal bei Markus bedanken der mehr bei Fragen zu PHP, JavaScript und MySQl immer helfend zur Seite steht.

PHP: Sonderzeichen in Bildern

So heute auch mal wieder was nützliches zum Thema PHP Programmierung, ich stand neulich vor dem Problem das ich in einem Bild welches dynamisch per PHP generiert wird einen Text schreiben sollte der unter anderem auch Sonderzeichen enthält.

Die normalerweise dafür verwendete Funktion ImageString kann aber leider keine Sonderzeichen schreiben, auch nicht wenn man diese als UFT-8 kodiert. Also musste ich ein wenig recherchieren und habe dann schließlich eine Möglichkeit gefunden wie man die Sonderzeichen ins Bild bekommt, dafür kann man die Funktion ImageTTFText verwenden, das Funktioniert aber nicht in allen Fällen, diese Funktion arbeitet nämlich mit einer selbstgewählten Schrift und diese muss Sonderzeichen unterstützen, dann geht es. Im Internet wird ja eh häufig Verdana verwendet, darum bietet es sich an diese Schriftart auch für die Bilder zu verwenden, und praktischerweise unterstätzt Verdana auch Sonderzeichen.

Ich hoffe ich habe mit dieser kleinen Anleitung dem ein oder anderen geholfen und Ihr müsst dann nicht so lange suchen wie ich als ich die Lösung noch nicht kannte^^