PHP数组格式化HTML输出

时间:2012-02-07 21:23:30

标签: php html css multidimensional-array

我有一个来自MYSQL表的数组$eps,我希望将其内容输出为html格式。我试图使用foreach循环输出内容,但季节的值正在包裹所有细节div。 下面的代码是我只能想到的

foreach($eps as $key){
    foreach($key as $k){
    echo "<div class='main'>";
        echo "<div class='season'>".$k['season'];
            echo "<div class='details'>";
                echo "<div class='ep'>".$k['episode']."</div>";
                echo "<div class='title'>".$k['title']."</div>";
                echo "<div class='airdate'>".$k['airdate']."</div>";
                echo "<div class='plot'>".$k['plot']."</div>";
            echo "</div>";
        echo "</div>";
    echo "</div>";
    }
}

数组内容

Array
(
    [1] => Array
        (
            [0] => Array
                (
                    [title] => Pilot: Part 1
                    [date] => Sep. 22, 2004
                    [plot] => Forty-eight survivors of an airline flight originating from Australia, bound for the 
                    [season] => 1
                    [episode] => 1
                )

            [1] => Array
                (
                    [title] => Pilot: Part 2
                    [date] => Sep. 29, 2004
                    [plot] => Jack, Kate and Charlie return to the group, but the transceiver is broken. Sayid Jarrah 
                    [season] => 1
                    [episode] => 2
                )
    [2] => Array
        (
            [0] => Array
                (
                    [title] => Man of Science, Man of Faith
                    [date] => Sep. 21, 2005
                    [plot] => One of the castaways is chosen to descend into the mysterious hatch, and Shannon stumbles 
                    [season] => 2
                    [episode] => 1
                )

            [1] => Array
                (
                    [title] => Adrift
                    [date] => Sep. 28, 2005
                    [plot] => After the raft explodes, Michael and Sawyer are left on what is left on the raft. They 
                    [season] => 2
                    [episode] => 2
                )

CSS

.main {
    width: 750px;
    margin-right: auto;
    margin-left: auto;
    clear: both;
    overflow:auto;
}
.season {
    margin: 5px;
    padding: 5px;
    width: 730px;
    background: #960;
    clear: both;
    overflow:auto;
    display: block;
}
.details {
    display: block;
    float: right;
    border-bottom: thin solid #000;
}
.ep, .title, .airdate, .plot {
    margin: 5px;
    padding: 5px;
    width: 675px;
    background: #CCC;
}

2 个答案:

答案 0 :(得分:3)

每个文档只出现一次ID ....你知道吗,对吗?让他们上课。

//only 1 main per total result, so, outside foreach.
echo "<div class='main'>";
foreach($eps as $key){
    //one season per sub array, so outside the other foreach:
    echo "<div class='season'>".$key[0]['season'];
    foreach($key as $k){
            echo "<div class='details'>";
                echo "<div class='ep'>".$k['episode']."</div>";
                echo "<div class='title'>".$k['title']."</div>";
                echo "<div class='airdate'>".$k['airdate']."</div>";
                echo "<div class='plot'>".$k['plot']."</div>";
            echo "</div>";
    }
    echo "</div>";
}
echo "</div>";

答案 1 :(得分:2)

$season = 0;
echo "<div id='main'>";
foreach($eps as $key){
    foreach($key as $k){

       // season check start
       if($season!=$k['season']) {
        echo "<div id='season'>".$k['season']; 
       }
       //season check finish
            echo "<div id='details'>";
                echo "<div id='ep'>".$k['episode']."</div>";
                echo "<div id='title'>".$k['title']."</div>";
                echo "<div id='airdate'>".$k['airdate']."</div>";
                echo "<div id='plot'>".$k['plot']."</div>";
            echo "</div>";
       // season check start
       if($season!=$k['season']) {
        echo "</div>";
        $season = $k['season'];
       }
    }
}
echo "</div>";