Maison  >  Article  >  développement back-end  >  Comment rendre un tableau aléatoire et non répétitif en php

Comment rendre un tableau aléatoire et non répétitif en php

PHPz
PHPzoriginal
2020-09-25 15:51:153499parcourir

Comment implémenter un tableau aléatoire et non répétitif en PHP : créez d'abord un exemple de fichier PHP ; puis utilisez la fonction "array_flip()" pour retourner les clés et les valeurs du tableau ; puis utilisez la fonctionnalité de tableau PHP pour couvrir la clé des répétitions et retournez-la enfin pour supprimer les valeurs en double ;

Comment rendre un tableau aléatoire et non répétitif en php

Recommandé : "Tutoriel vidéo PHP"

Écrivez plusieurs types de génération ci-dessous sans duplication Pour la méthode des nombres aléatoires, allez simplement dans le 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);
    }
}
 
 
?>

Parlons de la quatrième méthode, qui est la méthode flip. Utilisez array_flip() pour retourner les clés et les valeurs. du tableau et utilisez la fonctionnalité de tableau php, les clés en double seront écrasées. À ce stade, retourner à nouveau équivaut à supprimer les valeurs en double.

Les méthodes ci-dessus ne sont que des exemples simples, et certaines méthodes ont un champ d'application limité.

Regard sur l'efficacité de plusieurs méthodes :



L'utilisation de array_unique() a de mauvaises performances lorsque le tableau est grand. Bien sûr, shuffle() sera également affecté par cela.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn