/ PHPの配列の重複値をリセットする - PHP、配列、ランダム、重複

PHP配列の重複値をリセットする - PHP、配列、ランダム、重複

私はPHP配列を持っています:

$arr = array(1,2,3,3,4,6,6);

私はどちらかの複製の場所を探したい各重複ペア(3と6のいずれか)で、rand(1,8)を使用してその値をリセットします。これをどうやってやりますか?基本的に配列の値がすべて異なることを確認する必要があります。

回答:

回答№1は1

あなたが試すことができます

$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);

回答№2の場合は0

簡単な方法は、配列内のアイテムの数を記録し、array_uniqueを使用し、最後にrandを使用して配列を再充填することです。

$size = count($arr);
$arr = array_unique($arr);
while (count($arr) < $size) {
$arr[] = rand(1,8,$arr);
}

count($ arr)==までこれを繰り返したいcount(array_unique($ arr))。また、in_array()とループを使用して、配列にまだない値をランダムに与えるランダム関数を作成することもできます。