0

本の情報を表示する簡単なページを作成しようとしています。すべてをデータベースに保存するつもりでしたが、多次元配列を作成してそこに保存する方がよいと判断しました。

以下の例では「本」は4冊だけですが、最終的には100冊になる可能性があります。

この配列を繰り返し処理して各アイテムをHTMLで表示するのに助け<li>が必要ですが、1行に4つだけ表示してから、新しい行を開始する必要があります。誰かがこれを達成する方法を教えてもらえますか?

<?php
$books = array(
        1 => array(
            'name' => 'book 1 name here',
            'url' => '',
            'big_photo' => 'big photo of book 1',
            'small_photo' => 'small photo of book 1',
            'bio' => 'short bio 1'
            ),
        2 => array(
            'name' => 'book 2 name here',
            'url' => '',
            'big_photo' => 'big photo of book 2',
            'small_photo' => 'small photo of book 2',
            'bio' => 'short bio 2'
            ),
        3 => array(
            'name' => 'book 3 name here',
            'url' => '',
            'big_photo' => 'big photo of book  3',
            'small_photo' => 'small photo of book 3',
            'bio' => 'short bio 3'
            ),
        4 => array(
            'name' => 'book 4 name here',
            'url' => '',
            'big_photo' => 'big photo of book 4',
            'small_photo' => 'small photo of book 4',
            'bio' => 'short bio 4'
            )
);

echo $books["1"]["small_photo"];
?>

出力例

<ul>
    <li>books data</li>
    <li>books data</li>
    <li>books data</li>
    <li class="lastRow">books data</li>
    <li>books data</li>
    <li>books data</li>
    <li>books data</li>
    <li class="lastRow">books data</li>
    <li>books data</li>
    <li>books data</li>
    <li>books data</li>
    <li class="lastRow">books data</li>
</ul>
4

3 に答える 3

2

PHPを作成してからしばらく経ちましたが、これでうまくいくはずです。

$numBooks = count($books);
$j = 0
for ($i = 0; $i < $numBooks; i+=4)
{
    for ($j = $i; $j < $i + 4; $j < $numBooks; ++$j)
    {
        if ($j == 3)
        {
            echo '<li class="lastRow">' . $books[$j]["name"] . "</li>";
        }
        else
        {
            echo "<li>" . $books[$j]["name"] . "</li>";
        }        
    }
    // do whatever you need to break the row here
    $i = $j; 
}

li単一の行に要素を実際に表示するという点では、おそらくcssで display:inlineまたはを使用することをお勧めします。うまくいくでしょう...それらをすべて試して、どれがあなたに最適かを確認してください。inline-blockfloat:left

于 2012-04-11T02:41:47.363 に答える
1
<?php

$perRow=4;
$i = 0;
foreach($books as $book){
    if($i === 0){
        echo '<div class="row">';
    }
        echo '<div>';
        echo $book['name']. '<br>';
        echo $book['url']. '<br>';
        echo $book['big_photo']. '<br>';
        echo $book['small_photo']. '<br>';
        echo $book['bio']. '<br><br><br>';
        echo '</div>';

    if($i === $perRow){
        $i = 0;
        echo '</div>';
    }else{
        $i++;
    }
}

?>
于 2012-04-11T03:09:40.667 に答える
0

行にカウンターを使用し、モジュラスを使用して、表示ロジックで行を分割するタイミングを決定します。

于 2012-04-11T02:31:49.633 に答える