【问题标题】:Looping over PHP array several times at once whilst not showing same data一次循环多次 PHP 数组而不显示相同的数据
【发布时间】:2013-02-04 09:29:28
【问题描述】:

我正在我的网站上创建一些 jQuery 功能,而一系列 Facebook 帖子和推文被循环显示在首页上。

我的首页上有 5 个框,我需要 5 个框来同时显示这个数组中的随机元素,然后我使用一些 jQuery 循环功能来循环浏览这个数组。唯一的问题是,因为我在这个数组上循环了 5 次(每个框),并且这个数组中只有 20 个项目,它可以显示重复的数据。

为了帮助解释更多,这里是我的代码:

<?php
  $social_feeds = array_merge($tweets_feed, $facebook_feeds);
  $social_feeds_arranged = $tweets_feed_instance->sortArrayItemsByDate($social_feeds);
?>
<div id="social_box_item1" class="social_box_item">
  <?php foreach($social_feeds_arranged as $item) {  ?>
    <a class="item">
      <?php echo $item['text'] ?>
    </a>
  <?php } ?>
</div>
<div id="social_box_item2" class="social_box_item">
  <?php foreach($social_feeds_arranged as $item) {  ?>
    <a class="item">
      <?php echo $item['text'] ?>
    </a>
  <?php } ?>
</div>
<div id="social_box_item3" class="social_box_item">
  <?php foreach($social_feeds_arranged as $item) {  ?>
    <a class="item">
      <?php echo $item['text'] ?>
    </a>
  <?php } ?>
</div>
<div id="social_box_item4" class="social_box_item">
  <?php foreach($social_feeds_arranged as $item) {  ?>
    <a class="item">
      <?php echo $item['text'] ?>
    </a>
  <?php } ?>
</div>
<div id="social_box_item5" class="social_box_item">
  <?php foreach($social_feeds_arranged as $item) {  ?>
    <a class="item">
      <?php echo $item['text'] ?>
    </a>
  <?php } ?>
</div>

<script type="text/javascript">
  jQuery(document).ready(function() {

    jQuery('#social_box_item1').cycle({

    }); 
    jQuery('#social_box_item2').cycle({

    });
    jQuery('#social_box_item3').cycle({

    }); 
    jQuery('#social_box_item4').cycle({

    }); 
    jQuery('#social_box_item5').cycle({

    }); 

  });
</script>

我认为我需要做的是让第一个循环将它显示的项目推到数组的后面,所以当第二个循环访问第一个项目时,它不会显示相同的数组项目,与第 3、4、5 个循环。我曾尝试使用 array_push 和 array_shift 来做到这一点,但似乎无法让它工作。

有没有人有任何想法或可以帮助指出我哪里出错了?

【问题讨论】:

    标签: php jquery arrays


    【解决方案1】:

    那时就不需要那些循环了。如果您的意思是这样,您可以一个一个地访问这些数组项。试试这个:

            $social_feeds = array_merge($tweets_feed, $facebook_feeds);
            $social_feeds_arranged = $tweets_feed_instance->sortArrayItemsByDate($social_feeds);
    
        ?>
        <div id="social_box_item1" class="social_box_item">
            <a class="item">
                    <?php echo $social_feeds_arranged[0]['text']; ?>
                </a>
            </div>
        <div id="social_box_item2" class="social_box_item">
    
                <a class="item">
                    <?php echo $social_feeds_arranged[1]['text']; ?>
                </a>                                
    
        </div>
        <div id="social_box_item3" class="social_box_item">
    
                <a class="item">
                    <?php echo $social_feeds_arranged[2]['text']; ?>
                </a>                                
    
        </div>
        <div id="social_box_item4" class="social_box_item">
    
                <a class="item">
                    <?php echo $social_feeds_arranged[3]['text']; ?>
                </a>                                
    
        </div>
        <div id="social_box_item5" class="social_box_item">
    
                <a class="item">
                    <?php echo $social_feeds_arranged[4]['text']; ?>
                </a>                                
    
        </div>
    

    【讨论】:

    • 嗨。循环在那里,因为我仍然需要用 jQuery 循环循环遍历的项目填充每个框。我只需要确保现在同时显示相同的数组项。对不起,如果我一开始不清楚!
    • 但是每个框都填充了上面答案中的相关项目:) 如果在一个 social_box_item div 中只需要显示一项,那么在这种情况下,这些循环没有任何目的
    • 嗨。谢谢你的帮助。我设法使用 array_slice 对问题进行了排序,但您的回答肯定有帮助!
    猜你喜欢
    • 1970-01-01
    • 2016-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-22
    • 1970-01-01
    相关资源
    最近更新 更多