我不是一个高级的php编码器,所以我需要一些帮助。
我正在尝试使用指向完整图像和thumnail的链接来回显列表项。
这是理想的结果:
<li>
<a href="fullimagepath1">
<img src="thumnailpath1" />
</a>
</li>
<li>
<a href="fullimagepath2">
<img src="thumnailpath2" />
</a>
</li>
<li>
<a href="fullimagepath3">
<img src="thumnailpath3" />
</a>
</li>
...
这是我正在使用的代码
<?php
$images = rwmb_meta( 'product_gallery', 'type=image&size=press-thumb' );
$fullimages = rwmb_meta( 'product_gallery', 'type=image&size=productfull-thumb' );
foreach ( $fullimages as $fimages)
foreach ( $images as $image)
{
echo "<li><a class='thumb' href='{$fimages['url']}'><img src='{$image['url']}' /></a></li>";
} ?>
问题是我得到的缩略图却乘以实际结果的数量。如果我的图库有3个缩略图,那么结果将是9个缩略图,如果我有5个缩略图,则会得到25个。
如何修复代码? 提前谢谢!
答案 0 :(得分:1)
这是因为这行foreach ( $fullimages as $fimages)
触发了内循环。
由于您可能有3个图像,并且两个数组都包含三个项目数组,因此循环将在更大的循环内运行3次,这也将执行3次。所以你有9件物品。
在你的代码上
foreach ( $fullimages as $fimages) //Because of this loop next statement executes
foreach ( $images as $image) {
echo "<li><a class='thumb' href='{$fimages['url']}'><img src='{$image['url']}' /></a></li>";
}
你可能想要的是什么?
foreach ( $fullimages as $k => $fimages) {
// ^ Get the index of the array
echo "<li><a class='thumb' href='{$fimages['url']}'>
<img src='{$images[$k]['url']}' /></a></li>";
// ^ Use that key to find the thumbnail from $images array
}
答案 1 :(得分:0)
试试这段代码
foreach ( $fullimages as $fimages)
{
foreach ( $images as $image)
echo "<li><a class='thumb' href='{$fimages['url']}'><img src='{$image['url']}' /></a></li>";
} ?>
答案 2 :(得分:0)
您可以使用for并迭代
for ($i=0;$i<count($images);$i++){
echo $images[$i]['url'], $fullimages[$i]['url'];
}
或使用array_map
array_map(function($image, $fullimage){
echo $image['url'], $fullimage['url'];
}, $images, $fullimages);
答案 3 :(得分:0)
我建议像这样存储图像:
$images = array(
'fullpath' => '...'
'thumbpath' => '...'
)
而不是两个单独的数组。并且只是循环遍历一个数组。
或使用像next($array)
,current($array)
这样的迭代器函数来同时迭代两个数组。