我正在尝试构建一个显示书籍信息的简单页面,我将其全部存储在数据库中,但我已经决定只构建一个多维数组并将其存储在该数据库中会更好。
下面的示例中只有4本“书籍”,但最终可能会达到100本。
我需要帮助迭代这个数组并在HTML <li>
中显示每个项目,但我需要连续显示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>
答案 0 :(得分: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-block
。 float:left
也会奏效......全部尝试,看看哪种方式最适合你。
答案 1 :(得分: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++;
}
}
?>
答案 2 :(得分:0)
使用行的计数器并使用模数来决定何时在显示逻辑中断行。