在foreach循环中使用变量作为索引

时间:2018-02-19 22:31:13

标签: php

我使用一个简单的WP循环创建了一个布局,我试图随机化显示在循环中每个帖子的背景中显示的图像。

我的方法。

  1. 创建一个包含我可以从模板中任何位置调用的图像数组的函数。

  2. 在循环之前调用数组的函数。

  3. 使用$ i获取数组中的每个索引,从而更改图像。

  4. 我的数组功能(30张图片列表):

    function randompics(){
      $images = array(
       get_template_directory_uri().'/images/jobs_large/1.jpg', 
       get_template_directory_uri().'/images/jobs_large/2.jpg', 
       get_template_directory_uri().'/images/jobs_large/3.jpg', 
       get_template_directory_uri().'/images/jobs_large/4.jpg', 
       get_template_directory_uri().'/images/jobs_large/5.jpg' 
      );
      return $images;
    }
    

    我的模板。所以我希望后台URL在每次迭代时通过数组的索引前进。

    <?php 
    $pics = randompics();
    $i = 0; 
    if ( have_posts() ) : 
        while ( have_posts() ) : 
            the_post(); 
    ?>
    
    <div class="col-md-4">
        <div class="item-container" style="background: url(<?php echo $pics[$i]; ?>);"> 
    
        </div>
    </div>
    
    <?php 
            $i++;   
        endwhile; 
    endif; 
    ?>  
    

    编辑澄清我的问题。 因此,我的问题是为什么后台网址不起作用。语法显然是错误的。

1 个答案:

答案 0 :(得分:1)

循环没有任何问题,除非你应该使用&#34; isset($ pics [$ i])&#34;来检查数组项目。因为如果有x个图像和x + n个帖子,那么你会得到一个例外(http://php.net/manual/en/class.outofboundsexception.php)因为$ pics [x]中没有元素。

你的背景&#34; CSS属性是错误的。使用

HttpResponse.StatusDescription

background-image: url(YOUR IMAGE URL);

例如,

background:<background-color> <background-image> <background-repeat> <background-position>;