Перейти к содержанию
fist2thesky

[Решено] как разбить массив

Рекомендуемые сообщения

в цикле

<?php foreach($banners as $banner){?>

нужно разбить так, чтобы в каждом divе было по 2 значения.

я в программировании не силён. методом проб вышло так:

<div>
   <?php foreach($banners as $i => $banner){ if($i==2) break;  ?>
      <a href="<?php echo $banner['link']; ?>"><img src="<?php echo $banner['image']; ?>" alt="<?php echo $banner['title']; ?>" title="<?php echo $banner['title']; ?>" /></a>
   <?php } ?>
</div>

<div>
   <?php foreach($banners as $i => $banner){ if($i==2) break;  ?>
      <a href="<?php echo $banner['link']; ?>"><img src="<?php echo $banner['image']; ?>" alt="<?php echo $banner['title']; ?>" title="<?php echo $banner['title']; ?>" /></a>
   <?php } ?>
</div>

<div>
   <?php foreach($banners as $i => $banner){ if($i==2) break;  ?>
      <a href="<?php echo $banner['link']; ?>"><img src="<?php echo $banner['image']; ?>" alt="<?php echo $banner['title']; ?>" title="<?php echo $banner['title']; ?>" /></a>
   <?php } ?>
</div>

<div>
   <?php foreach($banners as $i => $banner){ if($i==2) break;  ?>
      <a href="<?php echo $banner['link']; ?>"><img src="<?php echo $banner['image']; ?>" alt="<?php echo $banner['title']; ?>" title="<?php echo $banner['title']; ?>" /></a>
   <?php } ?>
</div>

но таким образом в каждом dive выводятся только первые два елементы

foreach
<div>
1
2
</div>

<div>
1
2
</div>

<div>
1
2
</div> 

а нужно так:

foreach
<div>
1
2
</div>

<div>
3
4
</div>

<div>
5
6
</div> 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Где учат такому способу кодирования?

 

 

При целочисленном делении на 2 остаток от деления = 0

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

$i++;

НЕТ!!! $i - индекс массива

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хотел предложить по инкременту, а так, то используйте это и кодируйте как то правильней...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в цикле

<?php foreach($banners as $banner){?>
нужно разбить так, чтобы в каждом divе было по 2 значения.

я в программировании не силён. методом проб вышло так:

<div>
   <?php foreach($banners as $i => $banner){ if($i==2) break;  ?>
      <a href="<?php echo $banner['link']; ?>"><img src="<?php echo $banner['image']; ?>" alt="<?php echo $banner['title']; ?>" title="<?php echo $banner['title']; ?>" /></a>
   <?php } ?>
</div>

<div>
   <?php foreach($banners as $i => $banner){ if($i==2) break;  ?>
      <a href="<?php echo $banner['link']; ?>"><img src="<?php echo $banner['image']; ?>" alt="<?php echo $banner['title']; ?>" title="<?php echo $banner['title']; ?>" /></a>
   <?php } ?>
</div>
...
trololololololo

<div>
<?php foreach ($banners as $banner_i => $banner) { ?>
<?php if (ceil(($banner_i+1)%2)==0) { ?></div><div><?php } /* если остаток от деления ($banner_i+1) на 2 равен 0 (нулю) - два баннера вывели - закрываем div и открываем новый. (+1 потому что ключи массива начинаются с нуля) */ ?>
    <a href="<?php echo $banner['link']; ?>"><img src="<?php echo $banner['image']; ?>" alt="<?php echo $banner['title']; ?>" title="<?php echo $banner['title']; ?>" /></a>
<?php } ?>
</div>

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

:-)

trololololololo

<div>
<?php foreach ($banners as $banner_i => $banner) { ?>
<?php if (ceil(($banner_i+1)%2)==0) { ?></div><div><?php } /* если остаток от деления ($banner_i+1) на 2 равен 0 (нулю) - два баннера вывели - закрываем div и открываем новый. (+1 потому что ключи массива начинаются с нуля) */ ?>
    <a href="<?php echo $banner['link']; ?>"><img src="<?php echo $banner['image']; ?>" alt="<?php echo $banner['title']; ?>" title="<?php echo $banner['title']; ?>" /></a>
<?php } ?>
</div>

Спасибо, все работает. Только в вашем решении в первом div выводит один баннер. дальше по два

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

возможно $banner_i начинается с единицы - проверьте у себя.

если так - уберите там +1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

возможно $banner_i начинается с единицы - проверьте у себя.

если так - уберите там +1

убираю +1 и условие сразу выполняется (</div><div>). $banner_i начинается с нуля. В зависимости нету +1 или есть, условие выполняется сразу или через одну итерацию. В итоге один баннер или 0. Это только в первом div. Дальше всегда по два

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

эм. местами добавленное условие и ссылку поменяйте.  :ph34r:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

эм. местами добавленное условие и ссылку поменяйте.  :ph34r:

:D

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.