2016-12-13 57 views
2

我是新來的PHP,我已經通過所有的互聯網尋找解決我的問題的方法,但仍然找不到解決方案。如何將php輸出分成多列?

我有一個PHP代碼,看起來像這樣:

<?php 
if ($comments_count) { 
    for($i=0; $i<$comments_count; $i++) { 
     if ($dont_show_email[$i] != '1' && $email != '') { 
      $author[$i] = "<a href=\"mailto:{$email[$i]}\">{$author[$i] 
     } 
     </a>"; 
    } 
    $text[$i] = str_replace(chr(13), '<br />', $text[$i]); 
?> 
<div> 
    <?php print $author[$i]; ?> 
    <?php print $time[$i]; ?> 
    <?php print htmlspecialchars_decode($text[$i]); ?> 
</div> 

顯示像這樣的輸出:

Post 1 
Post 2 
Post 3 
Post 4 

我已經試過幾乎anythign我找到了,但我不能使它工作爲了我。 CSS列計數也沒有奏效,因爲每個帖子都有不同的高度尺寸,所以大多數帖子在一列的末尾被減半。

我要讓這樣顯示的輸出:

Column1 Column2 Column3 
Post 1 Post 2 Post 3 
Post 4 Post 5 Post 6 

我需要在列輸出分裂一樣,所以每一個崗位可以保持不同的高度尺寸。

謝謝你的幫助。

+0

什麼是$ comments_count。的print_r($ comments_count);出口; – Ima

+1

與php無關您正在尋找一個css解決方案。嘗試在帖子'div'上顯示:inline-block' – cske

+1

當然你在談論一個HTML表格作爲實現該佈局的最簡單機制 – RiggsFolly

回答

0

試試這個(HTML無邊距表爲基礎)的解決方案:

<table style="border: none;"> 
<?php 
$columns = 3; 
for($i=0; $i<$comments_count; $i++) { 
    if ($i % $columns == 0) echo "<tr>"; // begin of row 
    echo "<td>{$author[$i]}</td>"; 
    echo "<td>{$time[$i]}</td>"; 
    echo "<td>" . htmlspecialchars_decode($text[$i]) . "</td>"; 
    if ($i % $columns == ($columns - 1)) echo "</tr>"; // end of row 
} ?> 
</table> 
+0

很好的解決方案。這很好,它工作正常。但這並不能解決我的問題。將帖子的顯示更改爲@LukeBriggs表示已解決。但非常感謝你的幫助。 –

0

更新HTML代碼

<div class="box"> 

添加CSS

.box{float:left; width:31%; margin:3px; padding:5px;} 
+0

從一個在HTML/CSS佈局引擎上工作的人的角度來看,我並不是很喜歡用這種方式使用'float'的風扇;這不是它的設計目的。具有聲明寬度的「inline-block」對於此目的更好。 –

+0

你也可以這樣做:) –

+0

'Float'以複雜的方式影響其兄弟姐妹和父母,最終在過度使用時表現不佳,並可能導致意外的流動問題。它被設計用於將偶爾的圖像推到文章的一側,並讓文本在其周圍流動,而不是使用浮動元素創建整個佈局。 –