Jump to content
Sign in to follow this  
fist2thesky

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

Recommended Posts

в цикле

<?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> 

Share this post


Link to post
Share on other sites

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

 

 

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

Share this post


Link to post
Share on other sites

$i++;

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

в цикле

<?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>

Share this post


Link to post
Share on other sites

:-)

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 выводит один баннер. дальше по два

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

:D

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.