За последние 24 часа нас посетили 62095 программистов и 1781 робот. Сейчас ищут 843 программиста ...

Через каждые 2 числа.

Тема в разделе "PHP для новичков", создана пользователем 715kg, 26 мар 2015.

  1. 715kg

    715kg Активный пользователь

    С нами с:
    2 мар 2013
    Сообщения:
    147
    Симпатии:
    0
    Здравствуйте. Задача такая. Есть массив с числами.

    Массив имеет вид
    Код (PHP):
    1. $admin_module = array(
    2.  
    3. 1 => array( // Номер модуля в массиве.
    4.    '1' => 'module.png', //Название иконки. 
    5.    '2' => 'Настройки', //Название Модуля для отображения. 
    6.    '3' => 'Общие настройки системы.', //Описание модуля.. 
    7.    '4' => '1', //Кому давать доступ: 1-Для администратора. 2-Для модератора, так же доступен и админам. 
    8.    '5' => 'setting', //ссылка GET запроса намодуль. то есть select=запрос.  Указывается только запрос
    9. ),
    10.  
    11. 2 => array( // Номер модуля в массиве.
    12.    '1' => 'dd.png', //Название иконки. 
    13.    '2' => 'Настройки', //Название Модуля для отображения. 
    14.    '3' => 'Общие настройки системы.', //Описание модуля.. 
    15.    '4' => '1', //Кому давать доступ: 1-Для администратора. 2-Для модератора, так же доступен и админам. 
    16.    '5' => 'setting', //ссылка GET запроса намодуль. то есть select=запрос.  Указывается только название запроса
    17. ), 
    18.  
    19.  
    20. 3 => array( // Номер модуля в массиве.
    21.    '1' => 'dd.png', //Название иконки. 
    22.    '2' => 'Настройки', //Название Модуля для отображения. 
    23.    '3' => 'Общие настройки системы.', //Описание модуля.. 
    24.    '4' => '1', //Кому давать доступ: 1-Для администратора. 2-Для модератора, так же доступен и админам. 
    25.    '5' => 'setting', //ссылка GET запроса намодуль. то есть select=запрос.  Указывается только запрос
    26. ), 
    27.  
    28.   
    29. 4 => array( // Номер модуля в массиве.
    30.    '1' => 'dd.png', //Название иконки. 
    31.    '2' => 'Настройки', //Название Модуля для отображения. 
    32.    '3' => 'Общие настройки системы.', //Описание модуля.. 
    33.    '4' => '1', //Кому давать доступ: 1-Для администратора. 2-Для модератора, так же доступен и админам. 
    34.    '5' => 'setting', //ссылка GET запроса намодуль. то есть select=запрос.  Указывается только запрос
    35. ), 

    Вывожу массив в цикле. И нужно сгенерировать таблицу html, по 2 столбца в ряд.

    Код (PHP):
    1. $i=1;
    2. while(each($admin_module)){
    3.  
    4. $main .=<<<HTML
    5.  
    6. <td width="50%">
    7. <table width="100%">
    8.     <tbody><tr>
    9.         <td width="70" height="70" valign="middle" align="center" style="padding-top:5px;padding-bottom:5px;"><img src="/images/{$admin_module[$i][1]}" border="0"></td>
    10.         <td valign="middle"><div class="quick">[url="/admin.php?mod=options&select={$admin_module[$i][5]}"]{$admin_module[$i][3]}[/url]</div></td>
    11.     </tr>
    12. </tbody></table>
    13. </td>
    14.  
    15. HTML;
    16.  
    17.  
    18. $i++;
    19. } 

    В шаблоне, у меня тег {main} добавляет из цикла вывод.
    Получается все записи в одну строку.


    Код (Text):
    1. <table width="100%">
    2.     <tbody><tr>
    3.         <td bgcolor="#EFEFEF" height="29" style="padding-left:10px;"><div class="navigation">Все модули, которые были подключены в скрипт</div></td>
    4.     </tr>
    5. </tbody></table>
    6. <div class="unterline"></div>
    7.  
    8. <table width="100%"><tbody>
    9.  
    10. <tr>
    11.  
    12. {main}
    13.  
    14.  
    15. </tr>
    16.  
    17.  
    18. </tbody></table> 

    Нужно как то в цикле сделать, что бы через каждые 2 вывода, скрипт добавлял <tr> Код. </tr>.

    Надеюсь понятно описал. Заранее спасибо огромное. Просто бьюсь уже фиг знает сколько. На выводе, доложно получится что то вроде

    <tr>

    Код

    Код

    </tr>

    <tr>

    Далее

    Далее

    </tr>

    То есть по 2 столбца на строчку.
     
  2. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Там тебе не рыбу, но сеть.

    Код (PHP):
    1. $arr = array(1,2,3,4,5,6);
    2. $cutter = 0;
    3. for($i = 0, $size = sizeof($arr); $i<$size; $i++){
    4.    if ($cutter<2){
    5.       echo $arr[$i].' ';
    6.       $cutter++;
    7.    } else{
    8.       echo '<br>';
    9.       $i--;
    10.       $cutter = 0;
    11.    }
    12. } 
     
  3. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    Добавлю огня:
    Так-то задачка говно, но есть нюанс. Число столбцов должно быть одинаково во всех колонках. Если элементов массива не хватает, на полую строку, надо пустые td добавлять.

    Можно использовать вложенные циклы по строкам и столбцам чтобы вывести полный набор tr + td. И дергать из массива очередной элемент функцией next или each. В справке сказано как узнать когда массив закончится.
     
  4. 715kg

    715kg Активный пользователь

    С нами с:
    2 мар 2013
    Сообщения:
    147
    Симпатии:
    0
    Спасибо большое)) Дошло )