/ / Doppelte Werte in PHP-Array zurücksetzen - PHP, Arrays, Zufallszahlen, Duplikate

Setzen Sie doppelte Werte in PHP Array zurück - php, arrays, random, duplicates

Ich habe ein PHP-Array:

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

Ich möchte den Ort eines Duplikats findenIn jedem Duplikatpaar (entweder 3 und 6) und setzen Sie diesen Wert mit rand (1,8) zurück. Wie würde ich das machen? Ich muss im Wesentlichen sicherstellen, dass alle Array-Werte unterschiedlich sind.

Antworten:

1 für die Antwort № 1

Du kannst es versuchen

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

0 für die Antwort № 2

Eine einfache Möglichkeit besteht darin, die Anzahl der Elemente im Array aufzuzeichnen, array_unique zu verwenden und das Array schließlich mit einem Rand aufzufüllen:

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

Sie möchten dies wiederholen, bis count ($ arr) ==count (array_unique ($ arr)). Sie können auch eine Zufallsfunktion erstellen, die mithilfe von in_array () und einer Schleife Zufallswerte ergibt, die nicht bereits im Array enthalten sind.