我试图将3个不同类的对象插入到数组中,这样,数组看起来就像这个[objA,.., objA, objB,.., objB, objC,..., objC]
。
我设置函数的方法是获取一个rand多次objA,objB和objC将被插入到数组中,然后有3个for循环来插入每个对象。
$no_of_objA = rand(5, 10);
$no_of_objB = rand(1, 5);
$no_of_objC = rand(3, 8);
for($i = 0; $i < $no_of_objA; $i++)
$this->users[$i] = new A();
for($i = $no_of_objA; $i < ($no_of_objA + $no_of_objB); $i++)
$this->users[$i] = new B();
for($i = ($no_of_objA + $no_of_objB); $i < ($no_of_objA + $no_of_objB + $no_of_objC); $i++)
$this->users[$i] = new C();
最坏的情况显然是由rand函数生成的最大数字的Big-O。 这很好,但是,我有点认为可能有一个更优雅和优化的解决方案来实现这一目标。
我并不关心插入对象的顺序......
答案 0 :(得分:2)
如果您不关心使用ID跟踪
$a_count = mt_rand(5, 10); //Faster than rand
$b_count = mt_rand(1, 5);
$c_count = mt_rand(3, 8);
for($i = 0;$i < $a_count; $i++){
$this->users[] = new A();
}
for($i = 0;$i < $b_count; $i++){
$this->users[] = new B();
}
for($i = 0;$i < $c_count; $i++){
$this->users[] = new C();
}