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

Тема в разделе "Как сделать...", создана пользователем Extalionez, 13 сен 2012.

Статус темы:
Закрыта.
  1. Extalionez

    Extalionez Клоун

    Заблокирован
    Регистр.:
    21 авг 2008
    Сообщения:
    368
    Симпатии:
    185
    Доброго времени суток. Есть... ну допустим массив, но это объект, примерно следующего содержания.

    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 там или вообще один).
     
  2. xiregroup

    xiregroup Писатель

    Регистр.:
    8 сен 2012
    Сообщения:
    2
    Симпатии:
    2
    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==or $totalCount==$total){
          echo 
    '</tr>';
           
    $count 0;
        }
    }
    А вообще для пьяных есть Гугл... инфы этой как грязи.. да и здесь я на 100% уверен что есть такие же темы
     
    Extalionez нравится это.
  3. Extalionez

    Extalionez Клоун

    Заблокирован
    Регистр.:
    21 авг 2008
    Сообщения:
    368
    Симпатии:
    185
    А если для совсем тугодума, то что писать в <td>Данные</td>?
     
  4. xiregroup

    xiregroup Писатель

    Регистр.:
    8 сен 2012
    Сообщения:
    2
    Симпатии:
    2
    PHP:
    echo "<td>{$array[$i]}</td>";
    // Но тут если у тебя многомерный массив и ты хочешь из массива вытянуть ещё данные например
    echo "<td>{$array[$i]['data1']}</td>";
     
    Extalionez нравится это.
  5. antiterror

    antiterror xProgramming

    Регистр.:
    22 авг 2007
    Сообщения:
    344
    Симпатии:
    135
    тебе такое нужно было?
    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 == ){
            
    $teller 0;
            
    $set_value_tr .= "\n<tr>\n{$set_value}</tr>\n";
            
    $set_value "";
        } else {
            
    $teller++;
        }
    }
    echo 
    "<TABLE>{$set_value_tr}</TABLE>\n";
     
    ?>
     
    Extalionez нравится это.
  6. Extalionez

    Extalionez Клоун

    Заблокирован
    Регистр.:
    21 авг 2008
    Сообщения:
    368
    Симпатии:
    185
    да, но не обижайся, плз - решение от xiregroup более правильное
     
  7. NDK13

    NDK13 Создатель

    Регистр.:
    31 авг 2012
    Сообщения:
    36
    Симпатии:
    14
    Код:
    $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>";
    этот более правильный, учитывая
    последний цикл "дозаполняет" TD если количество элементов не кратно 3-м
     
    Extalionez нравится это.
Статус темы:
Закрыта.