Zufallszahlen ohne Wiederholungen generieren
Ihre aktuelle Methode zum Generieren zufälliger Yelp-Einträge mithilfe der Funktion rand() gewährleistet keine eindeutigen Einträge. Um Duplikate zu vermeiden, sollten Sie die Implementierung einer intelligenteren Randomisierungsstrategie in Betracht ziehen.
Ein Ansatz besteht darin, die native shuffle()-Funktion für einen Zahlenbereich zu verwenden, der die Auflistungsindizes darstellt. Dadurch wird ein gemischtes Array ohne Duplikate generiert:
<code class="php">$numbers = range(0, 19); shuffle($numbers);</code>
Eine alternative Methode besteht darin, eine benutzerdefinierte Funktion randomGen() zu erstellen, die Parameter für die minimale, maximale und gewünschte Menge an Zufallszahlen akzeptiert:
<code class="php">function randomGen($min, $max, $quantity) { $numbers = range($min, $max); shuffle($numbers); return array_slice($numbers, 0, $quantity); }</code>
Um dies in Ihrem PHP-Skript zu implementieren, generieren Sie mit randomGen() eine zufällige Listing-ID und speichern Sie sie in einer Datenbanktabelle. Überprüfen Sie bei jeder Seitenaktualisierung, ob die generierte Listing-ID mit dem gespeicherten Wert übereinstimmt. Wenn nicht, zeigen Sie diesen Eintrag an und aktualisieren Sie die Tabelle mit der neuen ID.
Dieser Ansatz stellt sicher, dass alle 20 Einträge einmal angezeigt werden, bevor es zu Wiederholungen kommt. Hier ist ein aktualisierter Codeausschnitt:
<code class="php"><?php $businesses = json_decode($data); $db = new PDO('mysql:host=localhost;dbname=yelp_listings', 'root', 'password'); // Generate a random listing ID using randomGen() $listing_id = randomGen(1, 20, 1)[0]; // Check if the listing ID matches the stored value $stmt = $db->prepare('SELECT listing_id FROM shown_listings WHERE id = ?'); $stmt->execute([$listing_id]); // Display the listing if it hasn't been shown yet if ($stmt->rowCount() == 0) { $business = $businesses->businesses[$listing_id - 1]; echo "<img border=0 src='" . $business->image_url . "'><br/>"; echo $business->name . "<br/>"; echo "<img border=0 src='" . $business->rating_img_url_large . "'><br/>"; // Add the listing ID to the shown_listings table $stmt = $db->prepare('INSERT INTO shown_listings (id) VALUES (?)'); $stmt->execute([$listing_id]); } ?></code>
Das obige ist der detaillierte Inhalt vonWie stellt man in PHP eindeutige Zufallszahlen ohne Wiederholungen sicher?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!