0

私はこの2種類のレイアウトを持っていますが、基本的にはどのレイアウトでもかまいません。divタグを使用すると、いくつかの可能なレイアウトタイプで望ましくない結果が生じるため、これにはテーブルを使用することにしました。

行と列の返される結果を説明する2つの写真を次に示します。

代替テキストhttp://acs.graphicsmayhem.com/images/SimpleLayout.png

これにより、次のように$layout配列が返されます。

$layout[0][0]
$layout[0][1]
$layout[1][1]

このレイアウトタイプでは、:$layout[1][0]が設定されていないか、存在しません。行1、列0はここに存在しません。では、これを使用して行スパンを決定するにはどうすればよいでしょうか...?

代替テキストhttp://acs.graphicsmayhem.com/images/MoreComplexLayout.png

わかりました。このレイアウトタイプは次を返します。

$layout[0][0]
$layout[0][1]
$layout[1][0]
$layout[2][0]
$layout[2][1]
$layout[3][1]

繰り返しますが、ここに設定されていないものがいくつかあります。

$layout[1][1]
$layout[3][0]

わかりました。行と列でforeachを実行する$layoutという配列がありますが、設定されていない行と列は取得されません。そこで、forループを作成しました(行数と列数の正しいカウントを使用して)。これが私がこれまでに得たものです:

// $not_set = array();
for($x = 0; $x < $cols; $x++)
{
    $f = 0;
    for($p = 0; $p < $rows; $p++)
    {
        // $f = count($layout[$p]); 
        if(!isset($layout[$p][$x]))
        {
            $f++;
            // It could be a rowspan or a Colspan...
            // We need to figure out which 1 it is!

            /*
            $not_set[] = array(
                'row' => $p,
                'column' => $x,
            );
            */
        }

        // if ($rows - count($layout[$p]))

    }
}

わかりました。$layout配列には2つのキーがあります。最初の1つは[行]で、2番目のキーは[列]です。今、それらすべてをループして、それが設定されていないかどうかを判断すると、行スパンまたはコルスパンのいずれかをどこかに配置する必要があることがわかります。私はここで完全に迷子になっています。

基本的に、次のような配列をここに返したいと思います。

$spans['row'][ row # ][ column # ] = Number of rowspans for that <td> element.
$spans['column'][ row # ][ column # ] = Number of colspans for that <td> element.

colspanまたはrowspanのいずれかが必要になりますが、同じ<td>要素に対して両方が必要になることはありません。また、上の写真は2列のみを示しており、2列を超える場合があります。

どんな助けでも大歓迎です!

4

1 に答える 1

0

colspanとrowspanのデータを、派生させるのではなく、元の配列に格納してみませんか?このようなもの:

$layout[0][0][1][1]
$layout[0][1][1][1]
$layout[1][0][2][1]
$layout[2][0][1][2]
$layout[2][1][1][1]
$layout[3][1][1][1]
于 2010-04-08T13:30:18.257 に答える