【问题标题】:data from database with foreach - from top to down使用foreach从数据库中获取数据 - 从上到下
【发布时间】:2011-10-19 18:24:47
【问题描述】:

数据库:

id | name
1  | aaa
2  | bbb
3  | ccc
.. | ...
250| zz3

foreach ($datafromdb as $value){
  echo $value->name();
}

这个给我看:

aaa bbb  ccc  ... zz3

从左到右

if 

<table>
 <tr>
    foreach ($datafromdb as $value){
      echo '<td>' . $value->name() . '</td>';
    }
  </tr>
</table>

显示:

aaa
bbb
ccc
...
zzz3

如何制作 12x12 的桌子?

aaa aaa1 bbb2
bbb aaa2 bbb2
... aaa3 bbb3
... ...  ....
zzz zzz2 zzz4

首先从上到下 (12x),然后是下一列,再从上到下 (12x) 等 12x

我已经从左到右、从左到右、从左到右等显示这个值,但我想从上到下、从上到下、从上到下等

【问题讨论】:

  • 如果不是超过 12x12 条记录的行为,你能保证数据库中有 144 条记录吗
  • 第二个 sn-p 的输出也应该显示连续的值。或者你实际上在循环中有tr

标签: php foreach


【解决方案1】:

Daniel Cherrington 的代码很好,但只用 PHP 就可以了:

<?php
$data = range(1,240);
$tab = array();
$max = 12;
for($i=0;$i<sizeof($data);$i++){
    $tab[($i % $max)][] = $data[$i];
}

echo "<table border='1'>";
foreach($tab as $line){
    echo "<tr>";
    foreach($line as $row){
        echo "<td>".$row."</td>";
    }
    echo "</tr>";
}
echo "</table>";
?>

【讨论】:

    【解决方案2】:

    您可以尝试并排创建表格(使用 css 浮动它们)

      $index=0;
        foreach ($data as $value)
        {
          if($index == '12') $index = 0;
    
          if($index == 0) echo '<table style="float:left;">';
          echo '<tr>' ;
          echo '<td>' . $value . '</td>';
          echo '</tr>' ;
          if($index==11) echo '</table>' ;
          $index ++;
        }
    

    【讨论】:

      【解决方案3】:

      看,我不完全了解php,但这是我能想到的:

      <table>
          <tr>
          var counter=0;
          foreach ($datafromdb as $value){
              if (i%12==0) { echo '<td>'; }
              echo $value->name()+'<br/>';
              if (i%12==0) { echo '</td>'; }
              counter++;
          }
          </tr>
      </table>
      

      希望这会有所帮助!

      【讨论】:

      • 这显示我从左到右、从左到右、从左到右等的价值,但我想从上到下、从上到下、从上到下等。
      【解决方案4】:
      <?php
      
      $data = range(1,16);
      
      $maxColumns = 4;
      $maxRows = 4;
      
      ?>
      
      <table>
      
          <? for($r = 0; $r < $maxRows; $r++) { ?>
              <tr>
                  <? for($c = 0; $c < $maxColumns; $c++) { ?>
                      <td><? echo $data[($c*$maxColumns)+$r]?></td>
                  <? }?>
              </tr>
          <? } ?>
      </table>
      

      您可能想在回显数据之前检查数据是否确实存在。

      【讨论】:

        【解决方案5】:
        <table>
                $index=0;
                foreach ($datafromdb as $value)
                {
                  if($index%12==0) echo '<tr>' ;
                  echo '<td>' . $value->name() . '</td>';
                  if($index%12==0) echo '</tr>' ;
                }
        </table>
        

        【讨论】:

        • 这显示我从左到右、从左到右、从左到右等的价值,但我想从上到下、从上到下、从上到下等。
        猜你喜欢
        • 2012-06-13
        • 2015-07-10
        • 2014-10-16
        • 2020-01-22
        • 2014-12-03
        • 2011-08-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多