2015-03-30 1 views
-3

Я хочу реализовать логику для создания таблицы из трех столбцов с использованием цикла foreach. Пример кода будет выглядеть следующим образом.Внедрить таблицу с несколькими столбцами, используя foreach loop

$array = ['0','1','2','3','4','5','6']; 
$table = '<table class="table"><tbody>'; 

foreach($array as $a=>$v){ 

    //if 0th or 3rd???????????wht should be here? 
    $table .= '<tr>'; 

    $table .= '<td>$v</td>'; 

    //if 2nd or 5th??????????and here too??? 
    $table .= '</tr>'; 

} 

$table = '</tbody></table>';    

Любые идеи?

Ожидаемый результат простой 3X3 таблица со значениями из массива

+1

1-мерный массив и 3 collumns? Зачем? как? что? – Shaeldon

+0

Каким будет ожидаемый результат? – Rizier123

+0

Я так хочу, чтобы вы «echo $ table» ... что вы ожидаете от o/p? – Sundar

ответ

2

Это должно работать для вас:

(См. при добавлении tr в начале и в конце до и после цикла foreach. Также я изменил кавычки в двойные кавычки и сделал, что вы добавить текст везде)

<?php 

    $array = ['0','1','2','3','4','5','6']; 
    $table = "<table class='table'><tbody><tr>"; 
             //^^^^ See here the start of the first row 
    foreach($array as $a => $v) { 

     $table .= "<td>$v</td>"; 
       //^   ^double quotes for the variables 
     if(($a+1) % 3 == 0) 
      $table .= "</tr><tr>"; 

    } 
    $table .= "</tr></tbody></table>"; 
     //^ ^^^^^ end the row 
     //| append the text and don't overwrite it at the end 
    echo $table; 

?> 

выход:.

<table class='table'> 
<tbody> 
    <tr> 
     <td>0</td> 
     <td>1</td> 
     <td>2</td> 
    </tr> 
    <tr> 
     <td>3</td> 
     <td>4</td> 
     <td>5</td> 
    </tr> 
    <tr> 
     <td>6</td> 
    </tr> 
</tbody> 
</table> 
3

Используйте это, вы можете искать эту

<?php 
echo('<table><tr>'); 
$i = 0; 
foreach($array as $product) 
{ 
    $i++; 
    echo '<td>'.$product .'</td>'; 
    if($i % 3==0) 
    { 
     echo '</tr><tr>'; 
    } 
} 
echo'</tr></table>'; 
?> 

Результат здесь:

<table> 
    <tr> 
     <td>data1</td> 
     <td>data2</td> 
     <td>data3</td>  
    </tr>  
    <tr> 
    <td>data4</td> 
    <td>data5</td> 
    <td>data6</td>  
    </tr> 
</table> 
+0

wow и никто ничего не говорит о константе 'i' – Rizier123

2

Вот простое решение с array_chunk():

<?php 

    $array = array('0','1','2','3','4','5','6'); 
    $d = array_chunk($array, 3); 

    $table = "<table border='1' class='table'><tbody>"; 
    foreach($d as $v) 
     $table .= "<tr><td>" . implode("</td><td>", $v) . "</td></tr>"; 

    $table .= "</tbody></table>"; 
    echo $table; 

?> 
+0

Хорошее решение с' array_chunk() '. Просто написал ваш пример немного проще – Rizier123

0

Здесь это простое решение с увеличением, которое работает с динамически созданной таблицей, подобной той, что находится на странице просмотра продукта Magento, чтобы отображать атрибуты продукта в двух столбцах таблицы, которым предшествует атрибут label -> у нас есть 4 столбца таблицы вместе с метками атрибутов. Это полезно для продуктов с несколькими атрибутами, которые отображают длинную страницу.

<?php 
$_helper = $this->helper('catalog/output'); 
$_product = $this->getProduct(); 
if($_additional = $this->getAdditionalData()): ?> 

<h2><?php echo $this->__('Additional Information') ?></h2> 
<table class="table table-bordered table-hover" id="product-attribute-specs-table"> 
    <col width="25%" /> 
    <col /> 
    <tbody> 
    <?php $i = 1; ?> 
    <tr> 
    <?php foreach ($_additional as $_data): ?> 
    <?php $_attribute = $_product->getResource()->getAttribute($_data['code']); 
if (!is_null($_product->getData($_attribute->getAttributeCode())) && ((string)$_attribute->getFrontend()->getValue($_product) != '')) { ?> 


      <th style="width: 20%;"><?php echo $this->htmlEscape($this->__($_data['label'])) ?></th> 
      <td class="data" style="width:20%;"><?php echo $_helper->productAttribute($_product, $_data['value'], $_data['code']) ?></td> 
      <?php $i++; if($i > 1 && ($i & 1)) echo "</tr><tr>";?> 

    <?php } ?> 
    <?php endforeach; ?> 
    </tr> 
    </tbody> 
</table> 
<script type="text/javascript">decorateTable('product-attribute-specs-table')</script> 
Смежные вопросы