我有個PHP數組:重置重複值在PHP陣列
$arr = array(1,2,3,3,4,6,6);
我想找到的任一重複中的每個重複的對的位置(任一3並且或者6),用蘭特重置值(1 ,8)。我會如何去做這件事?我基本上需要確保所有的數組值是不同的。
我有個PHP數組:重置重複值在PHP陣列
$arr = array(1,2,3,3,4,6,6);
我想找到的任一重複中的每個重複的對的位置(任一3並且或者6),用蘭特重置值(1 ,8)。我會如何去做這件事?我基本上需要確保所有的數組值是不同的。
您可以嘗試
$arr = array(1,2,3,3,4,6,6);
$dup = array_diff_assoc($arr,array_unique($arr));
$v = mt_rand(1, 8);
foreach ($dup as $k) {
while (in_array($v, $arr)) {
$v = mt_rand(1, 8);
}
$arr[$k] = $v;
}
echo "<pre>";
print_r($arr);
一個簡單的方法就是記錄中有多少項目在數組中,使用array_unique,最後使用蘭特填充數組:
$size = count($arr);
$arr = array_unique($arr);
while (count($arr) < $size) {
$arr[] = rand(1,8,$arr);
}
你想要重複這一點,直到數($ ARR) == count(array_unique($ arr))。你也可以使用in_array()和一個循環來創建一個隨機函數,該函數可以非常容易地給出數組中不存在的隨機值。
不,我已經通過PHP函數看了一下,但我有困難的返回重複元素的鍵/索引。 – user1114864