foreach() - вывести 12 элементов по 3 в строке.

Статус
В этой теме нельзя размещать новые ответы.

Extalionez

Клоун
Заблокирован
Регистрация
21 Авг 2008
Сообщения
368
Реакции
191
  • Автор темы
  • Заблокирован
  • #1
Доброго времени суток. Есть... ну допустим массив, но это объект, примерно следующего содержания.

PHP:
$array = array(
    array('data1'=>'data1data',
            'data2'=>'data2data'),
    array('data1'=>'data1data',
            'data2'=>'data2data'),
    array('data1'=>'data1data',
            'data2'=>'data2data'),
    array('data1'=>'data1data',
            'data2'=>'data2data'),
    array('data1'=>'data1data',
            'data2'=>'data2data'),
    array('data1'=>'data1data',
            'data2'=>'data2data'),
    array('data1'=>'data1data',
            'data2'=>'data2data'),
    array('data1'=>'data1data',
            'data2'=>'data2data'),
    array('data1'=>'data1data',
            'data2'=>'data2data'),
    array('data1'=>'data1data',
            'data2'=>'data2data'),
    array('data1'=>'data1data',
            'data2'=>'data2data'),
    array('data1'=>'data1data',
            'data2'=>'data2data'),
)
То есть массив с 12-ю массивами с данными. И вот встала непосильная для моего пьяного ума задача - как вывести эти 12 массивов в таблице 3 на 4
HTML:
<TABLE BORDER>
        <TR>
                <TD>массив один</TD> <TD>массив два</TD> <TD>массив три</TD>
        </TR>
        <TR>
                <TD>массив четыре</TD> <TD>массив пять</TD> <TD>массив шесть</TD>
        </TR>
        <TR>
                <TD>массив семь</TD> <TD>массив восемь</TD> <TD>массив евять</TD>
        </TR>
        <TR>
                <TD>массив десять</TD> <TD>массив одиннадцать</TD> <TD>массив двенадцать</TD>
        </TR>
</TABLE>
? Задача ещё усложняется тем, что в массиве может быть меньше 12-ти элементов(11 там или вообще один).
 
PHP:
$total=count($array);
$count = 0;
$totalCount = 0;
for ($i=0; $i<$total; $i++){
    $count++;
    $totalCount++;
    if ($count==1){
      echo '<tr>';
    }
    echo '<td>Данные</td>';
    if ($count==3 or $totalCount==$total){
      echo '</tr>';
       $count = 0;
    }
}

А вообще для пьяных есть Гугл... инфы этой как грязи.. да и здесь я на 100% уверен что есть такие же темы
 
  • Автор темы
  • Заблокирован
  • #3
PHP:
$total=count($array);
$count = 0;
$totalCount = 0;
for ($i=0; $i<$total; $i++){
    $count++;
    $totalCount++;
    if ($count==1){
      echo '<tr>';
    }
    echo '<td>Данные</td>';
    if ($count==3 or $totalCount==$total){
      echo '</tr>';
      $count = 0;
    }
}

А вообще для пьяных есть Гугл... инфы этой как грязи.. да и здесь я на 100% уверен что есть такие же темы
А если для совсем тугодума, то что писать в <td>Данные</td>?
 
PHP:
echo "<td>{$array[$i]}</td>";
// Но тут если у тебя многомерный массив и ты хочешь из массива вытянуть ещё данные например
echo "<td>{$array[$i]['data1']}</td>";
 
тебе такое нужно было?
PHP:
<?php
 
$get_array = array(
    array('data1'=>'data1data', 'data2'=>'data1data'),
    array('data1'=>'data2data', 'data2'=>'data2data'),
    array('data1'=>'data3data', 'data2'=>'data3data'),
    array('data1'=>'data4data', 'data2'=>'data4data'),
    array('data1'=>'data5data', 'data2'=>'data5data'),
    array('data1'=>'data6data', 'data2'=>'data6data'),
    array('data1'=>'data7data', 'data2'=>'data7data'),
    array('data1'=>'data8data', 'data2'=>'data8data'),
    array('data1'=>'data9data', 'data2'=>'data9data'),
    array('data1'=>'data10data', 'data2'=>'data10data'),
    array('data1'=>'data11data', 'data2'=>'data11data'),
    array('data1'=>'data12data', 'data2'=>'data12data'),
);
$teller = 0;
$set_value_tr = "";
foreach( $get_array as $sub_array ){
    $set_value .= "<td>{$sub_array['data1']} / {$sub_array['data2']}</td>\n";
    if( $teller == 2 ){
        $teller = 0;
        $set_value_tr .= "\n<tr>\n{$set_value}</tr>\n";
        $set_value = "";
    } else {
        $teller++;
    }
}
echo "<TABLE>{$set_value_tr}</TABLE>\n";
 
?>
 
Код:
$i=0;
    print "<table>
    <tbody>";
    foreach($array as $array_element){
        $i++;
        if($i==1){print "<tr>";}
 
        print "<td>". $array_element["data1"]." - ". $array_element["data2"]."</td>";
 
 
        if($i==3){print "</tr>";$i=0;}
    }
    if($i<3 && $i!=0){
        for($y=$i;$y<=3;$y++){
            print "<td>&nbsp;</td>";
        }
        print "</tr>";
    }
    print "</tbody>
    </table>";
этот более правильный, учитывая
Задача ещё усложняется тем, что в массиве может быть меньше 12-ти элементов(11 там или вообще один).

последний цикл "дозаполняет" TD если количество элементов не кратно 3-м
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху