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 でソートされてい$aFilesます。

4

6 に答える 6

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 に答える
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

必要な行数がわかっていると仮定すると、何も並べ替える必要はありません。ループに<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

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 に答える
-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 に答える