0

我有一个简单的 foreach 循环,它在二维数组中输入数据:

    foreach ($query as $row){

        if (!isset($sites[$row->site])){ $sites[$row->site] = array(); }
        if (!isset($sites2[$row->site])){ $sites2[$row->site] = array(); }

        if ($row->type == 1){
        $sites[$row->site][] = array($row->data1, $row->data2);
        } else {
        $sites2[$row->site][] = array($row->data1, $row->data2);
        }
    }

我需要在数组($sites 和 $sites2)中至少有 20 个条目。

因此,如果查询有 5 行,我想重复循环,重复 5 个现有行(将它们插入到数组中),直到数组达到 20 行。

有任何想法吗?

4

4 回答 4

1

试试这个:

$rows=0;
$haveDuplicated=false;
while($rows<20){
   foreach ($query as $row){
     if (!isset($sites[$row->site])){ $sites[$row->site] = array(); }
     if (!isset($sites2[$row->site])){ $sites2[$row->site] = array(); } 

     if ($row->type == 1){
       $sites[$row->site][] = array($row->data1, $row->data2);
     } else {
       $sites2[$row->site][] = array($row->data1, $row->data2);
     }
     $rows++;
     if ($rows>=20 && $haveDuplicated) break;
   }
   $haveDuplicated=true;
}
于 2012-09-10T17:40:10.253 回答
0

估计你还没看array_pad()


编辑:重新阅读您的问题,我认为此功能没有帮助,至少本身没有帮助。

我今天很累,我不能集中精力,所以你能帮我向我们展示预期的结果,而不是你的错误(没有冒犯)代码吗?

于 2012-09-10T17:43:24.930 回答
0
$index = 0;

for ($i=0; $i < 20; $i++) { 
    if($index >= count($query))
        $index = 0;

    if (!isset($sites[$query[$index]->site])){ $sites[$query[$index]->site] = array(); }
    if (!isset($sites2[$query[$index]->site])){ $sites2[$query[$index]->site] = array(); } 

    if ($query[$index]->type == 1){
        $sites[$query[$index]->site][] = array($query[$index]->data1, $query[$index]->data2);
    } else {
        $sites2[$query[$index]->site][] = array($query[$index]->data1, $query[$index]->data2);
    }
    $index++;

}
于 2012-09-10T17:44:44.863 回答
0

这将完全有效:

$row = 1;
while($row == 20){
    foreach ($query as $row){

        if (!isset($sites[$row->site])){ $sites[$row->site] = array(); }
        if (!isset($sites2[$row->site])){ $sites2[$row->site] = array(); }

        if ($row->type == 1){
        $sites[$row->site][] = array($row->data1, $row->data2);
        } else {
        $sites2[$row->site][] = array($row->data1, $row->data2);
        $row++;
    }
}  
于 2012-09-10T17:57:13.880 回答