Heim  >  Artikel  >  Backend-Entwicklung  >  So machen Sie ein Array in PHP zufällig und nicht wiederholbar

So machen Sie ein Array in PHP zufällig und nicht wiederholbar

PHPz
PHPzOriginal
2020-09-25 15:51:153427Durchsuche

So implementieren Sie ein zufälliges und sich nicht wiederholendes Array in PHP: Erstellen Sie zunächst eine PHP-Beispieldatei. Verwenden Sie dann die Funktion „array_flip()“, um die Schlüssel und Werte des Arrays umzudrehen um die wiederholten Schlüssel zu überschreiben und sie erneut umzudrehen; schließlich doppelte Werte entfernen.

So machen Sie ein Array in PHP zufällig und nicht wiederholbar

Empfehlung: „PHP-Video-Tutorial

Schreiben Sie mehrere Methoden zum Generieren sich nicht wiederholender Zufallszahlen auf, gehen Sie einfach zum Code

<?php
define(&#39;RANDOM_MAX&#39;, 100);
define(&#39;COUNT&#39;, 10);
 
echo &#39;max random num: &#39;.RANDOM_MAX, &#39; ;result count:&#39;.COUNT, &#39;<br/>&#39;;
 
invoke_entry(&#39;rand1&#39;);
invoke_entry(&#39;rand2&#39;);
invoke_entry(&#39;rand3&#39;);
invoke_entry(&#39;rand4&#39;);
 
function invoke_entry($func_name) {
    $time = new time();
    $time->time_start();
    call_user_func($func_name);
    echo $func_name.&#39; time spend: &#39;, $time->time_spend();
    echo &#39;<br/>&#39;;
}
function rand1() {
    $numbers = range (1, RANDOM_MAX);
    shuffle($numbers);  //随机打乱数组
    $result = array_slice($numbers, 1, COUNT);
    return $result;
}
function rand2() {
    $result = array();
    while(count($result)< COUNT) {
        $result[] = mt_rand(1, RANDOM_MAX); //mt_rand()是比rand()更好更快的随机函数
        $result = array_unique($result); //删除数组中重复的元素
    }
    return $result;
}
function rand3() {
    $result = array();  
    while(count($result) < COUNT) {
        $_tmp = mt_rand(1, RANDOM_MAX);
        if(!in_array($_tmp, $result)) { //当数组中不存在相同的元素时,才允许插入
            $result[] = $_tmp;
        }
    }  
    return $result;
}
function rand4() {
    $result = array();
    while (count($result) < COUNT) {
        $result[] = mt_rand(1, RANDOM_MAX);
        $result = array_flip(array_flip($result));  //array_flip将数组的key和value交换
    }
    return $result;
}
class time {
    private $_start;
     
    public function time_start() {
        $this->_start = $this->microtime_float();
    }
    public function time_spend() {
        return $this->microtime_float() - $this->_start;
    }
    private function microtime_float() {
        list($usec, $sec) = explode(" ", microtime());
        return ((float)$usec + (float)$sec);
    }
}
 
 
?>

Lassen Sie uns über die vierte Methode sprechen, lesen Sie sie einfach Die Lösung besteht darin, die Schlüssel und Werte des Arrays mithilfe der PHP-Array-Funktion umzudrehen. Zu diesem Zeitpunkt ist das erneute Umdrehen dasselbe wie das Entfernen der doppelten Werte.

Die oben genannten Methoden sind nur einfache Beispiele und einige Methoden haben einen begrenzten Anwendungsbereich.

Betrachten Sie die Effizienz mehrerer Methoden:



Die Verwendung von array_unique() hat eine schlechte Leistung, wenn das Array groß ist. Natürlich ist auch shuffle() betroffen durch diesen Einfluss.

Das obige ist der detaillierte Inhalt vonSo machen Sie ein Array in PHP zufällig und nicht wiederholbar. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:So ändern Sie php.ini in WampNächster Artikel:So ändern Sie php.ini in Wamp