2012-04-30 9 views
2

私はforeachループを持つwhile/forループを持っています。コードを読むことで、私が論理の点で達成しようとしていることを自明に説明できます。foreach文がwhile/forを何度もループするように強制する

私はPHPでカレンダーを作成しようとしています。 foreachステートメントは、カレンダーインターフェイスで4週間、7日間、5 x 7 = 35の35個のセルを作成します。

whileループは4月(30日)各細胞の30。

ただし、以下のコードを実装する場合、各数値は30回反復されます。

$i = 1; 
while ($i <= 30){ 
    foreach ($this->cells as $cells){ 
     foreach ($cells as $key => $object){ 
      echo "<td>" . $i . "</td>";      
      if($object % 7 == 0){ 
       echo "</tr><tr>"; 
      } 
     } 
    } 
    $i++; 
} 

私はこれを試してみました:代わりに1-30何回もそれぞれを出力するので、私は唯一の1-30をしたいとき、それは、1から35を出力

$i = 1; 
while ($i <= 30){ 
    foreach ($this->cells as $cells){ 
     foreach ($cells as $key => $object){ 
      echo "<td>" . $i . "</td>"; $i++;        
      if($object % 7 == 0){ 
       echo "</tr><tr>"; 
      } 
     } 
    } 

} 

私は結果のforループを試しましたが、それは各番号の多くを印刷します。ループコードの場合:

for ($i = 1; $i <= 30; $i++){ 
       foreach ($this->cells as $cells){ 
        foreach ($cells as $key => $object){ 
       echo "<td>" . $i . "</td>";    
       if($object % 7 == 0){ 
        echo "</tr><tr>"; 
       } 
        } 
       } 
      } 

$this->cells次の2つを行う必要があり、なぜ私は本当にわからないんだけど、配列

+0

'while()'の代わりに 'for()'ループを使わないのはなぜですか?私はそれに精通していなかったので – ThiefMaster

+0

。 – RSM

+2

の場合はどのようにして4 * 7 = 35ですか?説明してください。 –

答えて

2
$i=0; 
foreach ($this->cells as $cells){ 
    foreach ($cells as $key => $object){ 
     if($i<=30) 
      echo "<td>" . $i . "</td>"; 
     $i++;        
     if($object % 7 == 0){ 
      echo "</tr><tr>"; 
     } 
    } 
} 

このコード

+1

これは素晴らしい答えで、私を助けてくれました。しかし、私は最初のセルを1としたいので、$ i = 0から$ i = 1に変更しました。このコードは1つの問題を示しますが、5つのセル(35-30)がforgottonになります。​​ – RSM

+1

私のIFループの後にこの行を置くと、ELSE echo '​​';あなたの助けを借りて –

+0

ありがとう – RSM

1
$i=0; 
while ($i++ < 35){ 
    echo '<td>' . ($i <= 30 ? $i : '&nbsp;') . '</td>'; 
    if($i % 7 == 0) { 
     echo '</tr><tr>'; 
    } 
} 

を試し範囲1-35でありますループの場合は、すべてを1つで実行できます($this->cellsをループする必要がない場合は、この答えは無視してください)。

関連する問題