私は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()とループを使用して、配列にまだない値をランダムに与えるランダム関数を作成することもできます。