私のクラスのインスタンス化ごとにランダムなIDをrand()
で生成したいとします。私はそれがユニークであることを望んでいます。ここに私が書いたものがありますが、これはうまくいきません。すべてのクラスインスタンス化のための一意の乱数
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();
}
}
}
私はrand(1,3)
のように、低い値を生成して、意図的にこれを試してみた、と私はそれが働いていないIDが2、2、1と3つのオブジェクトを得ました。
これは、クラス$id_list
の新しいインスタンスが空になるためです。しかし、私はほとんど同じことをやっている人々を見てきました。 $counter
変数を宣言し、メソッドに$this->counter++
と入力します。違いは何ですか?
'rand'は一意の番号を作成しません。 –
そのため、私は 'checkID()'関数を作りました。 – Roman
$ id_listを静的にしようとしましたか? – misdreavus79