簡體   English   中英

在PHP代碼中顯示/隱藏表

[英]show/hide table in PHP code

我需要在下面的PHP代碼中使用if條件隱藏表。 我正在嘗試為此使用CSS,但似乎CSS無法讀取if條件,並且它始終運行並覆蓋。我想在不將表創建標簽置於if條件內的情況下實現它。 謝謝

<?php
$arr=array(array(1,2,3,4,5),array(6,7,8,9));
foreach ($arr as $val)
{
    echo '<table border="1" id="table1" align="center"   style="float:center;">';
    for($i=0;$i<sizeof($val);$i++)
    {
        echo '<tr><td>'.$val[$i].'</td></tr>';
        if($val[$i]>5)
        {?>
            <style>
            #table1 { visibility:hidden; }
            </style>
            <?php
        }
        else
        {?>
            <style>
            #table1 { visibility: visible !important;}
            </style>
            <?php
        }
    }
    echo'<br/>';
    echo '</table>';
}
?>

 <?php $arr = array(array(1,2,3,4,5), array(6,7,8,9)); $id = 1; ?> <html> <head> <style type="text/css"> .hidden { visibility: hidden; } </style> </head> <body> <?php foreach($arr as $val) : for($i = 0; $i < sizeof($val); $i++) : if($val[$i] > 5) : $hidden = true; else : $hidden = false; endif; endfor; ?> <table border="1" id="table' . $id++ . '" align="center" class="<?php if($hidden) : ?>hidden<?php endif; ?>"> <?php for($i = 0; $i < sizeof($val); $i++) : ?> <tr><td><?php echo $val[$i]; ?></td></tr> <?php endfor; ?> <br/> </table> <?php endforeach; ?> </body> </html> 

我不太確定為什么要嘗試回答這個問題。 我什至不知道您要隱藏哪個表。 您也沒有在一個表中的數據和應基於該數據的值隱藏的表之間建立良好定義的關系。

您的內聯CSS無法使用,因為您多次使用相同的ID。 您不能:

#table1 { visibility: hidden; }
#table1 { visibility: visible !important; }

瀏覽器將最后一個規則應用於兩個表。 而是使用您在循環中生成的CSS類。

.table-0 { visibility: hidden; }
.table-1 { visibility: visible !important; }

像這樣:

<?php

$arr = array( array( 1, 2, 3, 4, 5 ), array( 6, 7, 8, 9 ) );
$c   = 0;
foreach ( $arr as $val ) {

    $tClass = 'table-' . $c;

    echo '<table border="1" class="' . $tClass . '" align="center"   style="float:center;">';

    for ( $i=0; $i < sizeof( $val ); $i++ ) {

        echo '<tr><td>' . $val[ $i ] . '</td></tr>';

        if ( $val[ $i ] > 5 ) {            
            ?>
            <style>.table-0 { visibility:hidden; }</style>
            <?php
        }

    }

    echo '<br>';
    echo '</table>';

}

?>

盡管這將為您提供所需的東西,但仍然有很多需要改進的地方。 主要是不將CSS注入您所在的位置-您將為第二個數組中的每個值輸出一個<style> 另外,我很確定<style>不是<table>的允許子級, alignborder屬性已棄用,並且沒有float: center;

我也想知道您是否打算使用visibility: hidden; vs display: none;

考慮按照這些方針做一些事情,仍可以使用一些改進但更好。 我們輸出的<style>不會超過我們需要的。

<?php

$arr    = array( array( 1, 2, 3, 4, 5 ), array( 6, 7, 8, 9 ) );
$c      = 0;
$toHide = '';

foreach ( $arr as $val ) {

    $tClass = 'table-' . $c;

    echo '<table border="1" class="' . $tClass . '">';

    for ( $i=0; $i < sizeof( $val ); $i++ ) {

        echo '<tr><td>' . $val[ $i ] . '</td></tr>';

        if ( $val[ $i ] > 6 ) {
            $toHide = $tClass;
        }

    }

    echo '<br>';
    echo '</table>';

}

echo '<style>.' . $toHide . ' { visibility: hidden; }</style>';

?>

某些改進可能是將$toHide轉換$toHide數組push每個$toHide入數組,然后在以后必須處理多個類時內implode

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM