在PHP中访问数组块

时间:2014-06-24 13:44:23

标签: php arrays for-loop

你好我在迭代我的数组块时遇到了一些麻烦。

我正在尝试整理一个图像库,其中3个图像的集合遵循一个模式,然后下一个三个图像跟随模式的反面。我很确定我很接近,但我似乎无法弄清楚如何用for循环选择我的数组的第一,第二,第三等块。

这是我的样本集的print_r。

Array ( 
    [0] => Array ( [0] => images/uploads/cardinal.png [1] => images/uploads/fb.png [2] => images/uploads/logo.png ) 
    [1] => Array ( [0] => images/uploads/masc.png [1] => images/uploads/sportclubslogo.png [2] => images/uploads/venue.jpg )
) 

然后我有两个模式以某种模式打印出三个图像,问题是我不确定如何循环我的块并选择遵循pattern1的平均值和跟随pattern2的几率。以下是我目前用于尝试此操作的代码:

foreach($chunks as $chunk) {
    print_r($chunk);
    if($chunks % 2 == 0){
        echo "<div class='row'>
            <div class='gal-img medium-8 large-8 columns'>";
                echo "<img src='".$chunk[0]."' alt='gallery1'/>";
        echo "</div>
            <div class='gal-img medium-4 large-4 columns'>";
                echo "<img src='".$chunk[1]."' alt='gallery2'/>";
                echo "<img src='".$chunk[2]."' alt='gallery3'/>";
        echo "</div>
             </div>";
   }
   else {
       echo "<div class='row'>
           <div class='gal-img medium-4 large-4 columns'>";
               echo "<img src='".$chunk[0]."' alt='gallery4'/>";
               echo "<img src='".$chunk[1]."' alt='gallery5'/>";
       echo "</div>            
           <div class='gal-img medium-8 large-8 columns'>";
               echo "<img src='".$chunk[2]."' alt='gallery6'/>";
       echo "</div>
    </div>";
   }
}

我仍在计划重构foreach循环,我只想在编写这两个函数之前看到它正常工作。我想要实现的最终输出看起来与此相似:

|       || small |
| Large || small |
| small ||       |
| small || Large |

提前致谢

3 个答案:

答案 0 :(得分:1)

您在循环中迭代$chunks当前项目为$chunk。但是,您正在使用$chunks

所以像:

echo "<img src='".$chunks[0]."' alt='gallery1'/>";

应该是:

echo "<img src='".$chunk[0]."' alt='gallery1'/>";

你在if语句中做了类似的事情:

$chunks % 2 == 0

另请注意,由于$chunk是一个数组而您无法$chunk % 2,请尝试使用count($chunk) % 2

答案 1 :(得分:1)

假设你的$ chunks数组是迭代的(没有关联) - 意味着你的数组键是数字的,你可以像这样抓取索引:

foreach($chunks as $index => $chunk) {
    if($index % 2 == 0) {
        // stuff for even indexes
    } else {
        // stuff for odd indexes
}

你也可以玩$index % 3(每三个元素)等等。

答案 2 :(得分:0)

要在两个设计之间切换,您不能$chunks % 2 == 0。 相反,您可以将$i变量初始化为0,然后在每个循环中迭代它。关于这个$i,您可以使用模数。

示例:

$i =0;
foreach($chunks as $chunk) 
{
   print_r($chunk);
   if($i % 2 == 0){
      // Design 1
   }
   else
   {
      // design 2
   }
   $i++;
}

小心,你犯了一个错误,你希望$chunk[0]显示图像,而不是$chunks[0]