Рассчитать количество Rowspans и Colspans на основе ключей в Multi-Array - PullRequest
0 голосов
/ 08 апреля 2010

У меня есть эти 2 типа макетов, в принципе, это может быть любой макет на самом деле.Я решил использовать таблицы для этого, так как использование тегов div приводит к нежелательным результатам в некоторых возможных типах макета.

Вот 2 рисунка, которые описывают возвращенные результаты строки и столбца:

alt text 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]

Хорошо, у меня есть массив $ layout, который выполняет foreach для строки и столбца, но он не захватываетстроки и столбцы, которые НЕ УСТАНОВЛЕНЫ.Поэтому я создал цикл 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 - это [строка], а вторая клавиша - [столбец].Теперь перебирая их все и определяя, не установлен ли он, я получаю сообщение о том, что во что-то нужно поместить или строку, или кольспан.Я полностью потерян здесь.

По сути, я хотел бы, чтобы здесь возвращался массив, что-то вроде этого:

$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 столбцов.

Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 08 апреля 2010

Почему бы не сохранить данные 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]
...