similar to Samba's, but one for loop utilizing modulus:
Code:
<table>
<?php
  // Number of records
  $count = 47;
  
  // Loop through records
  for($i = 0; $i < $count; $i++){
    
    // Start a new row
    if($i &#37; 22 == 0){
      echo '  <tr>' . "\n";
    }
    
    // Table data
    echo '    <td id="td_' . ($i + 1) . '"></td>' . "\n";
    
    // End a row
    if(($i + 1) % 22 == 0 || ($i + 1) == $count){
      echo '  </tr>' . "\n";
    }
  }
?>
</table>
While I do not suggest emitting HTML using PHP, this was simply an easy way to show you the logic behind what you're trying to do. This script will produce:

Code:
<table>
  <tr>
    <td id="td_1"></td>
    <td id="td_2"></td>
    <td id="td_3"></td>
    <td id="td_4"></td>
    <td id="td_5"></td>
    <td id="td_6"></td>
    <td id="td_7"></td>
    <td id="td_8"></td>
    <td id="td_9"></td>
    <td id="td_10"></td>
    <td id="td_11"></td>
    <td id="td_12"></td>
    <td id="td_13"></td>
    <td id="td_14"></td>
    <td id="td_15"></td>
    <td id="td_16"></td>
    <td id="td_17"></td>
    <td id="td_18"></td>
    <td id="td_19"></td>
    <td id="td_20"></td>
    <td id="td_21"></td>
    <td id="td_22"></td>
  </tr>
  <tr>
    <td id="td_23"></td>
    <td id="td_24"></td>
    <td id="td_25"></td>
    <td id="td_26"></td>
    <td id="td_27"></td>
    <td id="td_28"></td>
    <td id="td_29"></td>
    <td id="td_30"></td>
    <td id="td_31"></td>
    <td id="td_32"></td>
    <td id="td_33"></td>
    <td id="td_34"></td>
    <td id="td_35"></td>
    <td id="td_36"></td>
    <td id="td_37"></td>
    <td id="td_38"></td>
    <td id="td_39"></td>
    <td id="td_40"></td>
    <td id="td_41"></td>
    <td id="td_42"></td>
    <td id="td_43"></td>
    <td id="td_44"></td>
  </tr>
  <tr>
    <td id="td_45"></td>
    <td id="td_46"></td>
    <td id="td_47"></td>
  </tr>
</table>