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

+0

Кто-то спамить этот Q и его ответы с downvotes ... – Endophage

ответ

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:inline или inline-block в вашем css. float:left тоже будет работать ... Попробуй их всех и посмотри, что лучше всего подходит для тебя.

+0

Серьезно ... кто проголосовали за это ...? – Endophage

Смежные вопросы