我怎么能合并单元格与html,css和php?

xpcnnkqh  于 2023-09-29  发布在  PHP
关注(0)|答案(1)|浏览(122)

我想合并列中具有相同值的单元格:

<td style="text-align: center; font-size: 9.5px;">{{$endereco->quadra}}</td>
                    <td style="text-align: center; font-size: 9.5px;">{{$endereco->lote}}</td>
                    <td style="text-align: center; font-size: 9.5px;">{{$requerimento->interesse_regularizacao ? $requerimento->interesse_regularizacao : 'Nenhum'}}</td>
                    <td style="text-align: center; font-size: 9.5px;">{{$instrumento_titulacao ? $instrumento_titulacao->tipo_instrumento_titulacao_nome : 'Nenhum'}}</td>
                    <td style="text-align: center; font-size: 9.5px;">{{$endereco_lote}}</td>
                    <td style="text-align: center; font-size: 9.5px;">{{$endereco->tipo_endereco}}</td>

我想把表格这样写:

但今天是这样打印的:

我的代码:

@foreach($requerimentos as $requerimento)
        @if($requerimento->situacao == 'Finalizado')
            @php 
                $lote = $requerimento->lote()->first();
                $endereco = $lote->endereco()->first();
                if($endereco){
                    $endereco_lote = $endereco->tipo_logradouro. ' '. $endereco->logradouro. ', nº '. $endereco->numero. ' - '. $endereco->bairro. ', '. $endereco->cidade. ' - '. $endereco->estado. ', '. $endereco->cep; 
                }else{
                    $endereco_lote = '';
                }                                    

                $instrumento_titulacao = \App\Models\TipoInstrumentoTitulacao::find($requerimento->instrumento_titulacao_id);

                $requerentes = $requerimento->todosRequerentesFormatadoRequerimento();
            @endphp
            @foreach($requerentes as $requerente)
               
                
                <tr>
                    <td style="text-align: center; font-size: 9.5px;">{{$endereco->quadra}}</td>
                    <td style="text-align: center; font-size: 9.5px;">{{$endereco->lote}}</td>
                    <td style="text-align: center; font-size: 9.5px;">{{$requerimento->interesse_regularizacao ? $requerimento->interesse_regularizacao : 'Nenhum'}}</td>
                    <td style="text-align: center; font-size: 9.5px;">{{$instrumento_titulacao ? $instrumento_titulacao->tipo_instrumento_titulacao_nome : 'Nenhum'}}</td>
                    <td style="text-align: center; font-size: 9.5px;">{{$endereco_lote}}</td>
                    <td style="text-align: center; font-size: 9.5px;">{{$endereco->tipo_endereco}}</td>
                    <td style="text-align: center; font-size: 9.5px;">{{$requerente->requerente_nome}}</td>
                    <td style="text-align: center; font-size: 9.5px;">{{$estado_civil ? $estado_civil->estado_civil_descricao : ''}}</td>
                    <td style="text-align: center; font-size: 9.5px;">{{$regime_casamento}}</td>
                    <td style="text-align: center; font-size: 9.5px;">{{$documento}}</td>
                    <td style="text-align: center; font-size: 9.5px;">{{$rg}}</td>
                    <td style="text-align: center; font-size: 9.5px;">{{$filiacao}}</td>
                    <td style="text-align: center; font-size: 9.5px;">{{$nome_conjuge}}</td>
                    <td style="text-align: center; font-size: 9.5px;">{{$cpf_conjuge}}</td>
                    <td style="text-align: center; font-size: 9.5px;">{{$rg_conjuge}}</td>
                </tr>
            @endforeach
        @endif
        @endforeach

有人能帮我吗
我举了这个数据的例子:

$datas = [
    ["QUADRA", "LOTE", "CLASSIFICAÇÃO INDIVIDUAL", "DIREITO REAL OUTORGADO", "TIPO LOGRADOURO", "LOGRADOURO", "NÚMERO", "COMPLEMENTO", "BAIRRO", "CIDADE", "ESTADO", "CEP", "TIPO DE USO", "NOME"],
    [7, 2, "Reurb-E", "Legitimação de Posse", "3ª Travessa da Rua", "Lindolfo Mascarenhas", 876, "Casa", "São Judas Tadeu", "Mata Verde", "ES", "29200-620", "Misto", "Maria Luiza Vargas Siqueira"],
    [7, 2, "Reurb-E", "Legitimação de Posse", "3ª Travessa da Rua", "Lindolfo Mascarenhas", 876, "Casa", "São Judas Tadeu", "Mata Verde", "ES", "29200-620", "Misto", "Reginaldo Montilla Nobrega"],
    [7, 2, "Reurb-E", "Legitimação de Posse", "3ª Travessa da Rua", "Lindolfo Mascarenhas", 876, "Casa", "São Judas Tadeu", "Mata Verde", "ES", "29200-620", "Misto", "Marilena Coutinho Vasconcellos"],
    [7, 2, "Reurb-E", "Legitimação de Posse", "3ª Travessa da Rua", "Lindolfo Mascarenhas", 876, "Casa", "São Judas Tadeu", "Mata Verde", "ES", "29200-620", "Misto", "Rinaldo Barros Monnerat"],
    [7, 2, "Reurb-E", "Legitimação de Posse", "3ª Travessa da Rua", "Lindolfo Mascarenhas", 876, "Casa", "São Judas Tadeu", "Mata Verde", "ES", "29200-620", "Misto", "Luzineide Salomão Bezerra"],
    [6, 10, "Reurb-E", "Legitimação de Posse", "Saco", "Quadra A1", 767, "Apartamento", "Portal da Alegria", "Mata Verde", "MT", "77006-412", "Vago", "Wescley Vilar Mourão"],
    [8, 9, "Reurb-E", "Legitimação Fundiária", "3ª Travessa da Rua", "Lindolfo Mascarenhas", 876, "Casa", "São Judas Tadeu", "Mata Verde", "ES", "29200-620", "Misto", "Rebeca Rodrigues Camacho"],
    [8, 9, "Reurb-E", "Legitimação Fundiária", "3ª Travessa da Rua", "Lindolfo Mascarenhas", 876, "Casa", "São Judas Tadeu", "Mata Verde", "ES", "29200-620", "Misto", "Everton de Arruda Kuster"],
    [8, 9, "Reurb-E", "Legitimação Fundiária", "3ª Travessa da Rua", "Lindolfo Mascarenhas", 876, "Casa", "São Judas Tadeu", "Mata Verde", "ES", "29200-620", "Misto", "Casemiro Anastacio Germano Bernardes"],
    [8, 9, "Reurb-E", "Legitimação Fundiária", "3ª Travessa da Rua", "Lindolfo Mascarenhas", 876, "Casa", "São Judas Tadeu", "Mata Verde", "ES", "29200-620", "Misto", "Theo Araujo Albenaz Rangel"]
];

这个代码的例子:

echo '<table border="1">';
echo '<tr>';
foreach ($datas[0] as $footer) {
    echo '<th>' . $footer . '</th>';
}
echo '</tr>';

$lines = count($datas);
for ($i = 1; $i < $lines; $i++) {
    echo '<tr>';
    for ($j = 0; $j < count($datas[$i]); $j++) {
        $value = $datas[$i][$j];
        if ($i > 0 && $datas[$i - 1][$j] === $value && $j < 6) {
            continue;
        }
        $rowspan = 1;
        for ($k = $i + 1; $k < $lines; $k++) {
            if ($datas[$k][$j] === $value && $j < 6) {
                $rowspan++;
            } else {
                break;
            }
        }
        if ($rowspan > 1) {
            echo '<td rowspan="' . $rowspan . '">' . $value . '</td>';
        } else {
            echo '<td>' . $value . '</td>';
        }
    }
    echo '</tr>';
}
echo '</table>';

然而,结果是这样的:

它几乎在那里,但我想同时。

qzlgjiam

qzlgjiam1#

下面是一个简化的例子,你可以如何计算和做跨度至少为cols。

$rows = [
    [1, 2, 3, 4, 5, 6],
    [1, 1, 1, 2, 2, 2],
    [1, 2, 2, 2, 2, 3],
];

foreach ($rows as $row) {
    $values = [];
    $prev = null;
    $repeat = 0;
    foreach ($row as $value) {
        if ($value === $prev) {
            $repeat++;
            continue;
        }
        if ($prev !== null) {
            $values[] = [$prev, $repeat];
        }
        $repeat = 1;
        $prev = $value;
    }
    $values[] = [$value, $repeat];
    echo "<tr>";
    foreach ($values as $value) {
        [$content, $repeat] = $value;
        if (1 === $repeat) {
            echo "<td>$content</td>";
            continue;
        }
        echo "<td colspan=$repeat>$content</td>";
    }
    echo "</tr>\n";
}
<tr><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td></tr>
<tr><td colspan=3>1</td><td colspan=3>2</td></tr>
<tr><td>1</td><td colspan=4>2</td><td>3</td></tr>

第2部分-检测相同行

$datas = [
    ["QUADRA", "LOTE", "CLASSIFICAÇÃO INDIVIDUAL", "DIREITO REAL OUTORGADO", "TIPO LOGRADOURO", "LOGRADOURO", "NÚMERO", "COMPLEMENTO", "BAIRRO", "CIDADE", "ESTADO", "CEP", "TIPO DE USO", "NOME"],
    [7, 2, "Reurb-E", "Legitimação de Posse", "3ª Travessa da Rua", "Lindolfo Mascarenhas", 876, "Casa", "São Judas Tadeu", "Mata Verde", "ES", "29200-620", "Misto", "Maria Luiza Vargas Siqueira"],
    [7, 2, "Reurb-E", "Legitimação de Posse", "3ª Travessa da Rua", "Lindolfo Mascarenhas", 876, "Casa", "São Judas Tadeu", "Mata Verde", "ES", "29200-620", "Misto", "Reginaldo Montilla Nobrega"],
    [7, 2, "Reurb-E", "Legitimação de Posse", "3ª Travessa da Rua", "Lindolfo Mascarenhas", 876, "Casa", "São Judas Tadeu", "Mata Verde", "ES", "29200-620", "Misto", "Marilena Coutinho Vasconcellos"],
    [7, 2, "Reurb-E", "Legitimação de Posse", "3ª Travessa da Rua", "Lindolfo Mascarenhas", 876, "Casa", "São Judas Tadeu", "Mata Verde", "ES", "29200-620", "Misto", "Rinaldo Barros Monnerat"],
    [7, 2, "Reurb-E", "Legitimação de Posse", "3ª Travessa da Rua", "Lindolfo Mascarenhas", 876, "Casa", "São Judas Tadeu", "Mata Verde", "ES", "29200-620", "Misto", "Luzineide Salomão Bezerra"],
    [6, 10, "Reurb-E", "Legitimação de Posse", "Saco", "Quadra A1", 767, "Apartamento", "Portal da Alegria", "Mata Verde", "MT", "77006-412", "Vago", "Wescley Vilar Mourão"],
    [8, 9, "Reurb-E", "Legitimação Fundiária", "3ª Travessa da Rua", "Lindolfo Mascarenhas", 876, "Casa", "São Judas Tadeu", "Mata Verde", "ES", "29200-620", "Misto", "Rebeca Rodrigues Camacho"],
    [8, 9, "Reurb-E", "Legitimação Fundiária", "3ª Travessa da Rua", "Lindolfo Mascarenhas", 876, "Casa", "São Judas Tadeu", "Mata Verde", "ES", "29200-620", "Misto", "Everton de Arruda Kuster"],
    [8, 9, "Reurb-E", "Legitimação Fundiária", "3ª Travessa da Rua", "Lindolfo Mascarenhas", 876, "Casa", "São Judas Tadeu", "Mata Verde", "ES", "29200-620", "Misto", "Casemiro Anastacio Germano Bernardes"],
    [8, 9, "Reurb-E", "Legitimação Fundiária", "3ª Travessa da Rua", "Lindolfo Mascarenhas", 876, "Casa", "São Judas Tadeu", "Mata Verde", "ES", "29200-620", "Misto", "Theo Araujo Albenaz Rangel"]
];

for ($index = 0, $count = count($datas); $index < $count; ++$index) {
    $sameRowCount = countSameRows($index, $datas);
    echo "row $index has the next $sameRowCount rows with the first 6 columns in common\n";
}

function countSameRows(int $index, array $data): int
{
    $sameCount = 0;
    for ($count = count($data) - 1; $index < $count; ++$index) {
        if (array_slice($data[$index], 0, 6) !== array_slice($data[$index + 1], 0, 6)) {
            return $sameCount;
        }
        $sameCount++;
    }

    return $sameCount;
}
row 0 has the next 0 rows with the first 6 columns in common
row 1 has the next 4 rows with the first 6 columns in common
row 2 has the next 3 rows with the first 6 columns in common
row 3 has the next 2 rows with the first 6 columns in common
row 4 has the next 1 rows with the first 6 columns in common
row 5 has the next 0 rows with the first 6 columns in common
row 6 has the next 0 rows with the first 6 columns in common
row 7 has the next 3 rows with the first 6 columns in common
row 8 has the next 2 rows with the first 6 columns in common
row 9 has the next 1 rows with the first 6 columns in common
row 10 has the next 0 rows with the first 6 columns in common

相关问题