2016-06-14 123 views
0

我想在單個foreach循環中顯示數據。我有兩個表dailystatsmonthlystats它們都有相同的列像callsminutesincomingcalls等即時通訊使用Yii PHP框架這裏是我的控制器在PHP的foreach循環中顯示兩個數組?

public function actionViewStats(){ 
    $model = new Company(); 
    $id = $_GET['id']; 

    $modelMonthly = $model->getCompanyUsageMonthly($id); 
    $modelDaily = $model->getCompanyUsageDaily($id); 

    $this->renderPartial('/shared/_company_stats', array(
     'modelDaily' => $modelDaily, 
     'modelMonthly'=>$modelMonthly 
     )); 
} 

這裏是我的表視圖。

 <?PHP if(isset($modelMonthly) && sizeof($modelMonthly)!=0): ?> 
      <div class="ibox-content col-md-12 col-xs-12"> 
       <div class="title col-md-2"> 
        <h3>Current Usage</h3> 
       </div> 
       <div class="col-md-10"> 
        <div class="col-md-12 col-xs-12"> 

         <table class="table"> 
          <thead> 
          <th>Minutes</th> 
          <th>Incoming Minutes</th> 
          <th>Calls</th> 
          <th>Incoming Calls</th> 
          </thead> 
          <tbody> 
          <?PHP 
          if(isset($modelMonthly)){ 
           foreach($modelMonthly as $monthlystats){ 
            ?> 
            <tr> 

             <td><?php echo $monthlystats->minutes?></td> 
             <td><?PHP echo $monthlystats->incoming_minutes; ?></td> 

             <td><?PHP echo $monthlystats->calls; ?></td> 
             <td><?PHP echo $monthlystats->incoming_calls; ?></td> 

            </tr> 
           <?PHP } } ?> 
          </tbody> 
         </table> 

        </div> 
       </div> 
      </div> 
     <?PHP endif;?> 

這是隻顯示每月的統計modelMonthly但我想說明的日常統計modelDaily也以相同的foreach循環..我該怎麼做呢?我曾嘗試array_combine等,但無法做到這一點。搜索SOF,但無法找到解決方案。上述

我的代碼只顯示每月統計這樣

enter image description here

但是我想表明這樣的下面。我已經創建了表格,但不能在同一個foreach循環中同時使用modelDailymodelMonthly。我曾嘗試不同的東西,但無法做到這一點..

enter image description here

<?PHP 
           if(isset($modelMonthly)){ 
            foreach($modelMonthly as $usage){ 
             ?> 
             <tr> 

              <td><?php echo $usage->minutes?></td> 
              <td><?PHP echo $usage->incoming_minutes; ?></td> 

              <td><?PHP echo $usage->calls; ?></td> 
              <td><?PHP echo $usage->incoming_calls; ?></td> 

             </tr> 
            <?PHP } } ?> 

回答

1

如果您兩臺陣列具有數字索引,可以使用常規的for循環:

for ($i = 0; $i < max(count($modelMonthly), count($modelDaily)); $i) { 
    if (isset($modelDaily[$i]) { 
     // Add the daily columns 
    } else { 
     // Add as much empty columns 
    } 
    if (isset($modelMonthly[$i]) { 
     // Add the monthly columns 
    } else { 
     // Add as much empty columns 
    } 
} 

下一步在thead中添加所需的標題th,並在循環內添加額外的td


或者,您可以獨立創建兩個表格,並使用CSS定位它們。這不在這個問題的範圍內,但這是我會推薦的。

+0

完美。我從你的兩個答案提示'for循環'和'備用'一個,而不是獨立使用兩個表,我使用'一個表'與'兩個foreach循環'裏面'if else loop'就像你上面的答案 –

+0

很高興我已被使用,你可以標記我的答案爲清晰起見(更多布朗尼分給我!)。 –

0

您shoudl使用此tecnique

foreach($modelMonthly as $index => $usage){ 
     ?> 
     <tr> 

      <td><?php echo $usage->minutes?></td> 
      <td><?PHP echo $usage->incoming_minutes; ?></td> 

      <td><?PHP echo $usage->calls; ?></td> 
      <td><?PHP echo $usage->incoming_calls; ?></td> 

      <td><?php if (isset($dailystats[$index]->minute)) echo $dailystats[$index]->minutes?></td> 
      <td><?PHP if (isset($dailystats[$index]->incoming_minutes)) echo $dailystats[$index]->incoming_minutes; ?></td> 

      <td><?PHP if (isset($dailystats[$index]->calls)) echo $dailystats[$index]->calls; ?></td> 
      <td><?PHP if (isset($dailystats[$index]->incoming_calls)) echo $dailystats[$index]->incoming_calls; ?></td> 
     </tr> 
    <?PHP } } ?> 
+0

這很危險地假定兩個數組都有相同數量的項目。這可能是真的,但你無法確定。 –

+0

@HypolitePetovan是的..與isset更好 – scaisEdge