0

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

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

各重複ペア (3 と 6 のいずれか) のいずれかの重複の場所を見つけ、rand(1,8) を使用してその値をリセットしたいと考えています。どうすればこれを行うことができますか?基本的に、すべての配列値が異なることを確認する必要があります。

4

2 に答える 2

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);
于 2012-11-26T19:08:30.477 に答える
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()とループを使用して、まだ配列に含まれていないランダムな値を非常に簡単に与えるランダム関数を作成することもできます。

于 2012-11-26T19:04:25.943 に答える