溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php實現(xiàn)數(shù)組隨機且不重復的方法

發(fā)布時間:2020-09-22 10:02:32 來源:億速云 閱讀:168 作者:小新 欄目:編程語言

這篇文章將為大家詳細講解有關php實現(xiàn)數(shù)組隨機且不重復的方法,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

php實現(xiàn)數(shù)組隨機且不重復的方法:首先創(chuàng)建一個PHP示例文件;然后利用“array_flip()”函數(shù)將數(shù)組的鍵和值翻轉;接著利用php數(shù)組特性,覆蓋重復的鍵并再翻轉一次;最后去掉重復的值即可。

下面寫幾種生成不重復隨機數(shù)的方法,直接上代碼吧

<?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);	//隨機打亂數(shù)組
	$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()更好更快的隨機函數(shù)
		$result = array_unique($result); //刪除數(shù)組中重復的元素
	}
	return $result;
}
function rand3() {
	$result = array();   
	while(count($result) < COUNT) {
		$_tmp = mt_rand(1, RANDOM_MAX);
		if(!in_array($_tmp, $result)) {	//當數(shù)組中不存在相同的元素時,才允許插入
			$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將數(shù)組的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()將數(shù)組的鍵和值翻轉,利用php數(shù)組特性,重復的鍵會覆蓋,此時再翻轉一次,就相同于去掉了重復的值。

以上幾種方法只是簡單的例子,有的方法適用范圍有限。

在看看幾種方法的效率:

php實現(xiàn)數(shù)組隨機且不重復的方法

php實現(xiàn)數(shù)組隨機且不重復的方法

用array_unique()在數(shù)組較大時性能比較差,當然shuffle()也會受此影響。

關于php實現(xiàn)數(shù)組隨機且不重復的方法就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

php
AI