Php 如何将值放在两列中?

Php 如何将值放在两列中?,php,codeigniter,Php,Codeigniter,如何通过PHP将选择数据库的值列表放在两列中 示例: 选择数据库的值: 互联网 游戏笔记 互联网 水池 咖啡 游戏笔记 我想要这样: 第一排 <table> <?php $left = true; foreach ($values as $value){ if ($left) echo "<tr>"; echo "<td>$value</td>";

如何通过PHP将选择数据库的值列表放在两列中 示例:

选择数据库的值:

  • 互联网
  • 游戏笔记
  • 互联网
  • 水池
  • 咖啡
  • 游戏笔记
我想要这样:

第一排

<table>
<?php
    $left = true;
    foreach ($values as $value){
        if ($left)
            echo "<tr>";
        echo "<td>$value</td>";
        if (!$left)
            echo "</tr>";
        $left = !$left;
    }
?>
</table>

对于列优先顺序(如示例中所示),您必须使用CSS,这非常复杂。差不多

<div class='inline_div'>
<?php 
    $middle = count($values)/2+1;
    $count = 0;
    foreach ($values as $value){
        if ($count==$middle)
            echo "</div><div class='inline_div'>";
        echo "$value<br/>";
        ++$count;
    }
?>
</div>


如果您希望它与示例中的完全相同,那么您必须将整个表读入内存,计算中点元素,然后使用基点、偏移和检查来构建表,以确保没有重复任何涉及整个计算负载的内容

解决此问题的一种方法是构建两个单独的表(每个表包含一列),然后将它们包含在一个包含两列的表中:

<?php
$list=array('a','b','c','d','e','f');
$midpoint=floor(count($list)/2);
$tableHeader='<table width="100%">';
$tableFooter='</table>';
$leftTable=$tableHeader;
$rightTable=$tableHeader;
for ($c=0; $c<$midpoint; $c++)
{
    $leftTable.='<tr><td width="100%">'.$list[$c].'</td></tr>';
}
$leftTable.=$tableFooter;
for ($c=$midpoint; $c<count($list); $c++)
{
    $rightTable.='<tr><td width="100%">'.$list[$c].'</td></tr>';
}
$rightTable.=$tableFooter;
$mainTable='<table><tr><td width="50%">'.$leftTable.'</td><td width="50%">'.$rightTable.'</td></tr></table>';
echo $mainTable;
?>


或者类似的东西。我没有测试过这段代码,但它非常接近(可能需要调整“for”部分的值)。简单的解决方案是使用两个div。正如前面的海报所评论的,您首先需要计算元素。假设您要显示的项目在数组中
$items
,您可以使用这种代码

<?php
$divItemCount = (count($items)%2) ? count($items)/2 + 1 : count($items)/2;
?>
<div id="leftdiv" style="width: 30%;">
<ul>
<?php
for($i=0; $i<$divItemCount; $i++) {
    echo '<li>'. $items[$i] .'</li>';
}?>
</ul></div><div id="rightdiv" style="width: 30%; float:left"><ul>
<?php
for($j=$i; $j<count($items); $j++) {
    echo '<li>'. $items[$j] .'</li>';
}?>
</ul></div>


我没有测试代码,因此可能会出现错误。您可以使用divs中的border属性在两个列表之间创建自定义分隔符。

最直接的方法是-如果您使用迭代器,请在NorewringCreator的帮助下编写一个列迭代器,例如: