2012-04-30 5 views
1

私はPHPでカレンダーを構築しています。すべての8番目のインスタンスは新しいtrに行く

コントローラでは、ある月の日数を検出し、その範囲を配列daysInMonthArrayに設定しました。ビューで

、I <td>にそれぞれ番号を出力し、その後 foreachこの配列:

<tr> 
    <?php 
    // output the number of days in the month 
     foreach($this->daysInMonthArray as $days1){ 
      foreach($days1 as $key => $object){ 
       echo "<td>" . $object . "</td>"; 
      } 
     } ?> 
</tr> 

が7日には、週にあり、に必要があるとして、私は、新しい<tr>ごとに第八番号を開始したいと思います新しい行を始めると新しい週が始まります。

私は、出力を0にしてから新しい行にしていない場合は、出力を残しているif文を囲むようにしました。しかし、<tr>タグはPHP文の外にあるため、これは機能しませんでした。これは非常に近い月の真ん中の2週間を除いて、作品

<tr> 
     <?php 
     // output the number of days in the month 

     foreach($this->daysInMonthArray as $days1){ 
      foreach($days1 as $key => $object){ 
       if($object % 8 == 0){ 
        echo "</tr><tr><td>" . $object . "</td>"; 
       }else { 
       echo "<td>" . $object . "</td>"; 
       } 
      } 
     } ?> 
     </tr> 

:私は自分のコードを更新した回答やコメントが続いて

。それは最初の週と最後の週に2週間で7日間、7週間に7日間です。

+0

は、私は「タグがPHP文の外にあるので、このdidntの仕事を」あなたが書いた – RSM

+0

しようとしたもののために更新を参照してください。あなたは問題が何であるかを見つけました。ループの中にそれらを入れるのはいかがですか? –

+0

私は増分変数を試して、7回の反復ごとにそれをリセットします。また、ループの外側に残るべき唯一のタグはテーブルタグです。 –

答えて

1

あなたはかなり次に、この1を自分で答えました:タグはPHP文の外にあるので、

このdidntの仕事

あなたは、ループ内で<tr>タグを取得する必要があります。

<?php 
    $daysInRow = 0; 
    // output the number of days in the month 
    foreach($this->daysInMonthArray as $days1) 
    { 
     foreach($days1 as $key => $object) 
     { 
      if($daysInRow % 7 === 0) 
      { 
       echo '<tr>'; 
      } 

      echo "<td>" . $object . "</td>"; 

      if($daysInRow % 7 === 0) 
      { 
       echo '</tr>'; 
      } 

      if($daysInRow % 7 === 0) 
      { 
       $daysInRow = 0; 
      } 
      else 
      { 
       $daysInRow++; 
      } 
     } 
    } 
?> 

これはテストされていないコードなので、より簡潔にできますが、うまくいけばいいと思います。

+0

Yay、modulus division! :) –

+0

不幸にも、これは新しい番号をすべて新しいtrに出力しました。 30行を作成します。問題の更新を参照してください。 – RSM

0

あなたは、既存のテーブルにテーブルを入れ子にしているということに1つの問題があります。試してみてください:

<tr><td> 
    <?php 
     // output the number of days in the month 
     foreach($this->daysInMonthArray as $days1){ 
     echo "<table>"; 

     $dayofweek = 0; 
     foreach($days1 as $key => $object){ 
      if($dayofweek%7 == 0) 
      echo "<tr>"; 

      echo "<td>" . $object . "</td>"; 

      if($dayofweek%7 == 0) 
      echo "</tr>"; 

      $dayofweek++;    
     } 

     if($dayofweek%7 != 0) //last tr 
      echo "</tr>"; 

     echo "</table>"; 
     } 
    ?> 
</td></tr> 
関連する問題