你好我在迭代我的数组块时遇到了一些麻烦。
我正在尝试整理一个图像库,其中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 |
提前致谢
答案 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]