Rumah  >  Soal Jawab  >  teks badan

Kelas PHP untuk jadual HTML: tugasan atribut pelik

<p>Dalam kelas yang membina jadual HTML, saya mempunyai kaedah ini yang menjadikan jadual. Semuanya berfungsi dengan baik kecuali untuk penetapan atribut HTML di bawah syarat tertentu (indentasi, teg penutup, perwakilan data, dll.). Apabila saya menetapkan data sel, saya memanggil setData() untuk menerima tiga parameter dan menggunakannya seperti ini. Perhatikan bagaimana saya menetapkan parameter ketiga (sifat sel): </p> <p><strong>Takrifan kaedah: </strong></p> <pre class="brush:php;toolbar:false;">public function setData( tatasusunan $data, array $row_attributes = [], array $cell_attributes = [] ): bool { // kod }</pre> <p><strong>Panggil: </strong></p> <pre class="brush:php;toolbar:false;">$table->setData( $penomboran->set hasil, [], // atribut baris array ( // atribut sel array(), // baris 1 (indeks 0) tatasusunan( // baris2 (indeks 1) ["id"=>"R2C1id"], // baris 2, sel 1 ["id"=>"R2C2id", "onclick"=>"R2C2_onclick();"], // baris 2, sel 2 ), tatasusunan( // baris 3 [], [], ["id"=>"R3C3id", "dipilih"=>"dipilih"], // baris 3, sel 3 [], [], [], [] ) ) );</pra> <p>Dalam contoh ini, jadual mempunyai tujuh lajur. </p> <p>Di sini anda akan melihat output HTML. Perhatikan sifat sel bagi baris kedua dan ketiga: </p> <pre class="brush:php;toolbar:false;"><div class='table-body'> <div class='table-row'> <div class='table-row-cell'>1</div> <div class='table-row-cell'>Consumidor Final</div> <div class='table-row-cell'>Consumidor Final</div> <div class='table-row-cell'></div> <div class='table-row-cell'>1</div> <div class='table-row-cell'></div> <div class='table-row-cell'></div> </div> <div class='table-row'> <div class='table-row-cell' id='R2C1id'>2</div> <div class='table-row-cell' id='R2C2id' onclick='R2C2_onclick();'>Prueba SRL</div> <div class='table-row-cell' 0='Array' 1='Array'>Tu Prueba</div> <div class='table-row-cell' 0='Array' 1='Array'>12345678901</div> <div class='table-row-cell' 0='Array' 1='Array'>1</div> <div class='table-row-cell' 0='Array' 1='Array'></div> <div class='table-row-cell' 0='Array' 1='Array'></div> </div> <div class='table-row'> <div class='table-row-cell'>3</div> <div class='table-row-cell'>Otra Prueba SA</div> <div class='table-row-cell' id='R3C3id' selected='selected'>Prueba 2</div> <div class='table-row-cell'>12345678902</div> <div class='table-row-cell'>1</div> <div class='table-row-cell'></div> <div class='table-row-cell'></div> </div> </div></pra> <p>Ini adalah kod yang saya gunakan untuk melakukan semua ini. Saya akan menunjukkan kepada anda coretan kod untuk pemaparan sel dan cara mengendalikan sifat. </p> <p><strong>Penyampaian sel: </strong></p> <pre class="brush:php;toolbar:false;">// proses sel $row_counter = 0; foreach ($ini->data sebagai $data) { // baris $row_build = ""; $cell_counter = 0; foreach ($data sebagai $cell_data) { // sel jika ($cell_counter < $col_count) { $row_build .= $this->getHtmlDiv( $html_cell_class, $data_sel ?? "", $this->getHtmlAttributes("sel", $row_counter, $cell_counter), 3 ); } $cell_counter++; } // $cell_counter++; // lengkapkan sel kosong untuk mengekalkan row:hover pada baris penuh manakala ($cell_counter < $col_count) { $row_build .= $this->getHtmlDiv( $html_cell_class, "", $this->getHtmlAttributes("sel", $row_counter, $cell_counter), 3 ); $cell_counter++; } $body_build .= $this->getHtmlDiv( $html_row_class, $row_build, $this->getHtmlAttributes("baris", $row_counter, 0), 2, benar ); $row_counter++; }</pre> <p><strong>Kaedah atribut:</strong></p> <pre class="brush:php;toolbar:false;">fungsi peribadi getHtmlAttributes(rentetan $bahagian, int $row, int $column): tatasusunan { if (count($this->html_attributes[$section]) > 0) { if (array_key_exists($row, $this->html_attributes[$section])) { jika ($bahagian === "sel") { if (array_key_exists($column, $this->html_attributes[$section][$row])) { kembalikan $this->html_attributes[$section][$row][$column]; } } kembalikan $this->html_attributes[$section][$row]; } } kembali []; }</pre> <p>Apa yang salah? terima kasih. </p>
P粉384679266P粉384679266382 hari yang lalu399

membalas semua(1)saya akan balas

  • P粉349222772

    P粉3492227722023-09-06 20:10:33

    Nah, apabila saya menyiarkan soalan dan memilih kod, jawapannya muncul. Dalam keadaan kaedah getHtmlAttributes() 中,缺少 else.

    private function getHtmlAttributes(string $section, int $row, int $column): array
    {
    
        if (count($this->html_attributes[$section]) > 0) {
            if (array_key_exists($row, $this->html_attributes[$section])) {
                if ($section === "cell") {
                    if (array_key_exists($column, $this->html_attributes[$section][$row])) {
                        return $this->html_attributes[$section][$row][$column];
                    } else { // <-- this 
                        return [];
                    }
                }
                return $this->html_attributes[$section][$row];
            }
        }
        return [];
    }

    balas
    0
  • Batalbalas