Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вывести ссылки в блок по 4
 
 автор: OLi   (07.09.2012 в 20:22)   письмо автору
 
 

Есть массив ссылок. Как вывести их в блоке div по 4 ссылки в каждом?

  Ответить  
 
 автор: confirm   (07.09.2012 в 20:24)   письмо автору
 
   для: OLi   (07.09.2012 в 20:22)
 

Ну вы уже совсем издеваетесь. ) А вы как предполагаете, как такое можно сделать?

  Ответить  
 
 автор: OLi   (07.09.2012 в 20:37)   письмо автору
 
   для: confirm   (07.09.2012 в 20:24)
 

В цикле делать проверку на деление $i без остатка на 4, если == 0, то закрывать блок </div>

  Ответить  
 
 автор: confirm   (07.09.2012 в 20:38)   письмо автору
 
   для: OLi   (07.09.2012 в 20:37)
 

Ну, а зачем тогда вопросы?

  Ответить  
 
 автор: OLi   (07.09.2012 в 20:41)   письмо автору
 
   для: confirm   (07.09.2012 в 20:38)
 

Вопрос к тому, что первые 4 ссылки не будут помещены в div


if ($i/4==0) {echo '<div><a href=""></a></div>';}

  Ответить  
 
 автор: confirm   (07.09.2012 в 20:45)   письмо автору
 
   для: OLi   (07.09.2012 в 20:41)
 

Это с чего вдруг? Разве перед началом цикла нельзя открыть его, как и закрыть последний после окончания цикла?
И вообще, если это простой массив, то и цикла вообще не нужно.

  Ответить  
 
 автор: OLi   (07.09.2012 в 20:49)   письмо автору
 
   для: confirm   (07.09.2012 в 20:45)
 

Выходит что так:

Открыли

<div>
Цикл:
if ($i/4 ==0) {</div><div>link</div>}
Конец Цикла

  Ответить  
 
 автор: confirm   (07.09.2012 в 20:58)   письмо автору
 
   для: OLi   (07.09.2012 в 20:49)
 

Это с чего так? Ну вы же на вопрос мой ответили правильно, а код почему пишете неадекватный ответу?
И что у вас будет в итоге, разве уже без исполнения этого кода не понятно, что полная ерунда?

  Ответить  
 
 автор: OLi   (07.09.2012 в 21:01)   письмо автору
 
   для: confirm   (07.09.2012 в 20:58)
 

да - все верно. Будет так:
<? if ($i%4==0):?>
                       <div><?=anchor('/categories/'.$item->parent_id.'/'.$item->id$item->title)?></div>
                       <?endif;?>


Нет - все же не то...тут каждые 4 итерации будет выведен блок div c одной ссылкой...

  Ответить  
 
 автор: confirm   (07.09.2012 в 21:18)   письмо автору
 
   для: OLi   (07.09.2012 в 21:01)
 

И как думаете, в чем ошибка?
Я не понимаю - словами вы объяснили правильно, что нужно делать когда деление по модулю равно 0, а вот действуете вопреки....
И ваша экономия ради жалких <div> и </div>, забитая многократными вставками РНР-кода и <?endif;?>, это что разве удобно или сверх оперативно?

  Ответить  
 
 автор: OLi   (07.09.2012 в 21:28)   письмо автору
 
   для: confirm   (07.09.2012 в 21:18)
 

хм. что-то не могу сообразить...
нужно получить такую структуру:

<div>4 ссылки тут</div>

<div>4 ссылку тут</div>

  Ответить  
 
 автор: confirm   (07.09.2012 в 21:37)   письмо автору
 
   для: OLi   (07.09.2012 в 21:28)
 

Боже мой, да напишите так, если никак не доходит:
<?
$a 
= array('aaaa''bbbb''cccc''dddd''eeee''ffff''gggg''hhhh');
echo 
'<pre>';
print_r($a);
$a array_chunk($a4);
print_r($a);
$s '';
foreach(
$a as $v $s .= '<div>'.implode('<br>'$v).'</div>';
echo 
$s;

А с делением по модулю разберитесь, подсказывать не буду, сами найдите ошибку свою, так как это очень простое решение.

  Ответить  
 
 автор: OLi   (07.09.2012 в 21:52)   письмо автору
 
   для: confirm   (07.09.2012 в 21:37)
 

Забыл совсем про array_churk,пример понятен..разобрался)

  Ответить  
 
 автор: oli   (09.09.2012 в 14:14)   письмо автору
 
   для: OLi   (07.09.2012 в 21:52)
 

Сделал так:
 <div class="sub_menu">
    <? if (isset($submenu) && count($submenu)>0) { $i=1$s='';

            foreach(
$submenu as $item) {

              
$s.=anchor('/categories/'.$item->parent_id.'/'.$item->id$item->title).'</br>';
                 if (
$i%== 0) { echo '<div>'.$s.'</div>'$s=''; }
                 
$i++;
            }
            
      }
    
?>
  </div>

  Ответить  
 
 автор: confirm   (09.09.2012 в 14:24)   письмо автору
 
   для: oli   (09.09.2012 в 14:14)
 

if(!($i%4)) - этого достаточно
$s='' - это то зачем?

  Ответить  
 
 автор: OLi   (09.09.2012 в 14:25)   письмо автору
 
   для: confirm   (09.09.2012 в 14:24)
 

У меня ругался на необъявленный $s

  Ответить  
 
 автор: confirm   (09.09.2012 в 14:29)   письмо автору
 
   для: OLi   (09.09.2012 в 14:25)
 

Да объявляйте на здоровье, но раз, вне цикла. Я спрашиваю, зачем закрывая блок, вы очищаете эту переменную? И на кой ляд она вам вообще нужна? Вы же не формируете полное меню, а затем выводите. Что его строки без этой $s вывести нельзя?
$i % 4 - это признак только для закрытия блока, строк он не касается.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования