2012-04-11 53 views
0

我想建立一个简单的页面,将显示书籍信息的多维数组,我打算给它的所有存储在数据库中,但我已经决定这将是更好的只是建立一个多维数组并将其存储在那里面。迭代在PHP

有一个在下面的例子中只有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

你可以添加一个样本...'HTML'格式您正在寻找这样我们就可以在同一页上 – Baba 2012-04-11 02:39:13

+0

有人在垃圾邮件这个Q和与downvotes答案... – Endophage 2012-04-11 02:50:52

回答

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++; 
    } 
} 

?> 
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元素而言,你可能会想使用display:inlineinline-block在你的CSS。 float:left也可以工作...尝试一切,看看哪个最适合你。

+0

认真......谁投下这个...? – Endophage 2012-04-11 02:46:01