Php 将多个对象插入阵列

Php 将多个对象插入阵列,php,arrays,Php,Arrays,我试图将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 <

我试图将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();
$no_of_objA=rand(5,10);
$no__objB=兰特(1,5);
$no_of_objC=兰特(3,8);
对于($i=0;$i<$no\u of_objA;$i++)
$this->users[$i]=newa();
对于($i=$no_of_objA;$i<($no_of_objA+$no_of_objB);$i++)
$this->users[$i]=new B();
对于($i=($no_of_objA+$no_of_objB);$i<($no_of_objA+$no_of_objB+$no_of_objC);$i++)
$this->users[$i]=newc();
最坏的情况显然是由rand函数生成的最大数的Big-O。 这很好,但是,我认为可能有一个更优雅和优化的解决方案来实现这一点


我并不真正关心插入对象的顺序…

如果您不关心使用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();
}
$a_count=mt_rand(5,10)//比兰德快
$b_count=百万兰特(1,5);
$c_count=百万兰特(3,8);
对于($i=0;$i<$a_count;$i++){
$this->users[]=newa();
}
对于($i=0;$i<$b_count;$i++){
$this->users[]=new B();
}
对于($i=0;$i<$c_count;$i++){
$this->users[]=newc();
}

如果您不关心使用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();
}
$a_count=mt_rand(5,10)//比兰德快
$b_count=百万兰特(1,5);
$c_count=百万兰特(3,8);
对于($i=0;$i<$a_count;$i++){
$this->users[]=newa();
}
对于($i=0;$i<$b_count;$i++){
$this->users[]=new B();
}
对于($i=0;$i<$c_count;$i++){
$this->users[]=newc();
}

free cookie如果有人知道OP在做什么,我就不会得到免费的cookie…@Rasclatt我能卖给你一个吗?:)@Dagon只要我不必去尝试类似的算法方案,那么也许……我是个吝啬鬼。免费饼干如果有人知道OP在做什么,我就不会得到免费饼干……@Rasclatt我能卖给你一块吗?:)@Dagon只要我不必去尝试和思考一个类似的算法方案,那么也许……我是一个吝啬鬼。这实际上会产生与问题中的代码完全相同的结果,因为PHP会自动从0开始索引数组。它更优雅,因为循环更简单,但产生相同的结果。它并没有更快,我也不认为存在更快的解决方案。创建和插入
n
对象显然是
O(n)
。这实际上会产生与问题中的代码完全相同的结果,因为PHP会自动从0开始索引数组。它更优雅,因为循环更简单,但产生相同的结果。它并没有更快,我也不认为存在更快的解决方案。创建和插入
n
对象显然是
O(n)