4

目前我有一个表顺序

A B C D

E F G H

但我想订购桌子

A  E

B  F

C  G

D  H

代码:

for($i=0;$i<=count($aFiles);$i++)
{
   if($i%5==0)
   {
      echo "</tr><tr>";
   }

   echo '<td><a>'.$aFiles[$i].'</a></td>';
}
echo '</tr>';
echo '</table>';

文件已按 az in 排序$aFiles

4

6 回答 6

0

使用 HTML 技巧的简单方法:

echo '<div class="tbl_group"><table>';
for($i=0;$i<=count($aFiles / 2);$i++)
{
   echo '<tr>';
   echo '<td><a>'.$aFiles[$i].'</a></td>';
   echo '</tr>';
}
echo '</tr>';
echo '</table></div>';
echo '<div class="tbl_group"><table>';
for($i=$aFiles / 2;$i<=count($aFiles);$i++)
{
   echo '<tr>';
   echo '<td><a>'.$aFiles[$i].'</a></td>';
   echo '</tr>';
}
echo '</tr>';
echo '</table></div>';

对于 CSS:

.tbl_group {
  float: left;
}

使用这种方法,可以并排构建 2 个表。float: leftCSS 会自动调整表格的位置。

于 2013-09-16T08:57:45.557 回答
0

假设您知道所需的行数,则无需采取任何措施,只需在生成<td>s 的循环中添加一些逻辑:

$size = count($aFiles);
echo '<table><tr>';
for($i=0;$i<=ceil($size/2);$i++) {
  if($i%2==0) {
    echo '<td><a>'.$aFiles[$i].'</a></td>';
    echo "</tr><tr>";
  } else {
    if(isset($aFiles[$i+floor($size/2)])) {
      echo '<td><a>'.$aFiles[$i+floor($size/2)].'</a></td>';
    }
  }
}
echo '</tr></table>';
于 2013-09-16T08:52:45.290 回答
0

$aFiles = array('a','b','c','d', 'e', 'f', 'g');



$iColumnNumber = 2;
$iRowMaxNumber = ceil(count($aFiles) / $iColumnNumber);

$iTableRow = 0;
$iTableColumns = 1;
$aTableRows = array();

// make array with table cells
foreach ($aFiles as $sFile)
{
    if ($iTableRow == $iRowMaxNumber)
    {
        $iTableRow = 0;
        $iTableColumns++;
    }

    if (!isset($aTableRows[$iTableRow]))
    {
        $aTableRows[$iTableRow] = array();
    }

    $aTableRows[$iTableRow][] = '<td>' . $sFile . '</td>';

    $iTableRow++;
}

// if there is odd number of elements
// we should add empty td elements
for ($iTableRow; $iTableRow < $iRowMaxNumber; $iTableRow++)
{
    if (count($aTableRows[$iTableRow]) < $iTableColumns)
    {
        $aTableRows[$iTableRow][] ='<td>empty</td>';
    }
}

// display table
echo '<table>';

foreach ($aTableRows as $aTableRow)
{

    echo '<tr>';
    echo implode('', $aTableRow);
    echo '</tr>';
}

echo '</table>';
于 2013-09-16T09:21:06.783 回答
0

未优化,但这应该或多或少起作用:

$aFiles = array ("A","B","C","D","E","F","G","H","I","J","K","L","M","N",);
$rows = 4;
$columns = floor((count($aFiles)/$rows))+1;

echo '<table>';
for ($i=0;$i<$rows;$i++) {
    echo '<tr>';
    for ($j=0;$j<$columns;$j++) {
        echo '<td>';    
        if (isset($aFiles[$i+$j*$rows]))
            echo $aFiles[$i+$j*$rows];
        else 
            echo "&nbsp;";
        echo '</td>';
    }
    echo '</tr>';    
}
echo '</table>';

如果需要,您可以更改行数。

于 2013-09-16T09:21:35.710 回答
0

下面的示例也适用于具有奇数元素的关联数组 + 数组。

关联 AND 索引数组的代码:

$aFiles = ['test'=>"A","B",'c'=>"C","D","E","F",'g'=>"G","H",'iii'=>"I"];
$aKeys = array_keys($aFiles);
$aRows = ceil(count($aFiles) / 2);

echo '<table>';
for($i=0; $i < $aRows; $i++) {
    echo 
        '<tr>' .
        '   <td>' . $aFiles[$aKeys[$i]] . '</td>' .
        '   <td>' . (isset($aKeys[$i+$aRows]) ? $aFiles[$aKeys[$i+$aRows]] : 'empty') . '</td>' .
        '</tr>';
}
echo '</table>';

仅索引数组的代码:

$aFiles = ["A","B","C","D","E","F","G","H","I"];
$aRows = ceil(count($aFiles) / 2);

echo "<table>";
for($i=0; $i < $aRows; $i++) {
    echo 
        "<tr>" .
        "   <td>" . $aFiles[$i] . "</td>" .
        "   <td>" . (isset($aFiles[$i+$aRows]) ? $aFiles[$i+$aRows] : "empty") . "</td>" .
        "</tr>";
}
echo "</table>";

两个示例的输出是相同的:

<table>
    <tr>
        <td>A</td>
        <td>F</td>
    </tr>
    <tr>
        <td>B</td>
        <td>G</td>
    </tr>
    <tr>
        <td>C</td>
        <td>H</td>
    </tr>
    <tr>
        <td>D</td>
        <td>I</td>
    </tr>
    <tr>
        <td>E</td>
        <td>empty</td>
    </tr>
</table>
于 2013-09-16T09:27:04.280 回答
-1

试试这个。假设您的 $aFiles 按字母顺序包含 az 。

for ($i = 0; $i < count($aFiles/2); $i++){
    echo '<tr><td><a>'.$aFiles[$i].'</a><td><td><a>'.$aFiles[$i+13].'</a><td></tr>'
}
于 2013-09-16T08:53:42.537 回答