PHP에서 무작위 및 비반복 배열을 구현하는 방법: 먼저 PHP 샘플 파일을 만든 다음 "array_flip()" 함수를 사용하여 배열의 키와 값을 뒤집은 다음 PHP 배열 기능을 사용하세요. 반복되는 키를 덮어쓰고 다시 뒤집습니다. 마지막으로 중복 값을 제거합니다.
추천: "PHP 비디오 튜토리얼"
반복되지 않는 난수를 생성하는 여러 가지 방법을 적어두고 코드로 이동하세요.
<?php define('RANDOM_MAX', 100); define('COUNT', 10); echo 'max random num: '.RANDOM_MAX, ' ;result count:'.COUNT, '<br/>'; invoke_entry('rand1'); invoke_entry('rand2'); invoke_entry('rand3'); invoke_entry('rand4'); function invoke_entry($func_name) { $time = new time(); $time->time_start(); call_user_func($func_name); echo $func_name.' time spend: ', $time->time_spend(); echo '<br/>'; } 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); } } ?>
네 번째 방법에 대해 이야기해 보겠습니다. 그냥 읽어 보세요. 해결 방법은 array_flip()을 사용하여 배열의 키와 값을 뒤집는 것입니다. PHP 배열 기능을 사용하면 중복된 키를 덮어쓰게 되는데, 이때 다시 뒤집는 것은 중복된 값을 제거하는 것과 같습니다.
위 방법은 단순한 예일 뿐이며 일부 방법은 적용 범위가 제한되어 있습니다.
여러 메소드의 효율성을 살펴보면 다음과 같습니다.
array_unique()를 사용하면 배열이 클 때 성능이 저하되고, 물론 shuffle()도 영향을 받습니다. 이 영향력으로.