Ich möchte eine zufällige ID über rand()
für jede Instanz meiner Klasse generieren. Und ich möchte, dass es einzigartig ist. Hier ist, was ich geschrieben habe, aber das funktioniert nicht.Einzigartige Zufallszahl für jede Klasseninstanziierung
class Computer
{
private $id = 0; // placeholder for ID
private $id_list = []; // placeholder to store used IDs
public function __construct()
{
$this->checkID();
}
private function checkID()
{
$this->id = rand(1,3);
if (!in_array($this->id, $this->id_list))
{
array_push($this->id_list, $this->id);
} else {
$this->checkID();
}
}
}
Ich habe dies absichtlich versucht, mit niedrigen Werten zu erzeugen, wie rand(1,3)
, und ich habe drei Objekte mit IDs 2, 2, 1. So funktioniert es nicht.
Ich nehme an, das ist, weil für jede neue Instanz einer Klasse $id_list
Array leer wird. Aber ich habe Leute gesehen, die fast dasselbe machen. Eine $counter
Variable deklarieren und setzen $this->counter++
in der __construct
Methode. Was ist der Unterschied?
'Rand' macht keine eindeutigen Zahlen. –
Deshalb habe ich eine 'checkID()' -Funktion geschrieben. – Roman
Haben Sie versucht, $ id_list statisch zu machen? – misdreavus79