2012-04-11 57 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