0

2D 配列にデータを入力する単純な 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 行ある場合、ループを繰り返し、配列が 20 行に達するまで、5 つの既存の行を繰り返します (配列内に挿入します)。

何か案は?

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

これはまったく機能します:

$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 に答える
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 に答える