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 № 1Du 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.