Bagaimana untuk Memastikan Nombor Rawak Unik Tanpa Ulangan dalam PHP?

Barbara Streisand
Lepaskan: 2024-10-21 11:58:02
asal
798 orang telah melayarinya

How to Ensure Unique Random Numbers Without Repeats in PHP?

Menjana Nombor Rawak Tanpa Ulangan

Kaedah semasa anda menjana penyenaraian Yelp rawak menggunakan fungsi rand() tidak memastikan penyenaraian unik. Untuk mengelakkan pendua, pertimbangkan untuk melaksanakan strategi rawak yang lebih bijak.

Satu pendekatan ialah menggunakan fungsi shuffle() asli pada julat nombor yang mewakili indeks penyenaraian. Ini menjana tatasusunan yang dikocok tanpa pendua:

<code class="php">$numbers = range(0, 19);
shuffle($numbers);</code>
Salin selepas log masuk

Kaedah alternatif adalah untuk mencipta fungsi rawakGen() tersuai yang menerima parameter untuk kuantiti nombor rawak minimum, maksimum dan dikehendaki:

<code class="php">function randomGen($min, $max, $quantity) {
    $numbers = range($min, $max);
    shuffle($numbers);
    return array_slice($numbers, 0, $quantity);
}</code>
Salin selepas log masuk

Untuk melaksanakan ini dalam skrip PHP anda, hasilkan ID penyenaraian rawak menggunakan randomGen() dan simpannya dalam jadual pangkalan data. Pada setiap muat semula halaman, semak sama ada ID penyenaraian yang dijana sepadan dengan nilai yang disimpan. Jika tidak, paparkan penyenaraian itu dan kemas kini jadual dengan ID baharu.

Pendekatan ini memastikan kesemua 20 penyenaraian dipaparkan sekali sebelum sebarang pengulangan berlaku. Berikut ialah coretan kod yang dikemas kini:

<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>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Memastikan Nombor Rawak Unik Tanpa Ulangan dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!