PHP+;foreach在每n次之后重复html结构
我试图在foreach循环中实现下面的结构,在每两个图像之后,它将重复整个结构 我有一些可以使用的基本知识,例如计数器++;和%2,但不知道语法以及如何在代码中使用它PHP+;foreach在每n次之后重复html结构,php,wordpress,loops,foreach,repeat,Php,Wordpress,Loops,Foreach,Repeat,我试图在foreach循环中实现下面的结构,在每两个图像之后,它将重复整个结构 我有一些可以使用的基本知识,例如计数器++;和%2,但不知道语法以及如何在代码中使用它 <?php function dt_attached($postid=0, $size='thumbnail', $attributes='', $linksize='full', $count=-1) { if ($postid<1) $postid = get_the_ID();
<?php
function dt_attached($postid=0, $size='thumbnail', $attributes='', $linksize='full', $count=-1) {
if ($postid<1) $postid = get_the_ID();
if ($images = get_children(array(
'post_parent' => $postid,
'post_type' => 'attachment',
'numberposts' => $count,
'post_mime_type' => 'image',)))
foreach($images as $image) {
$attachment=wp_get_attachment_image_src($image->ID, 'thumbnail');
$small_image = wp_get_attachment_image_src($image->ID, 'midium');
$big_image = wp_get_attachment_image_src($image->ID, 'full');
?>
<div class="mainrow">
<div class="block">
<a href='<?php echo $big_image[0]; ?>' class='cloud-zoom-gallery' title='Thumbnail 1' rel="useZoom: 'zoom1', smallImage: '<?php echo $small_image[0]; ?>' ">
<img src="<?php echo $attachment[0]; ?>" <?php echo $attributes; ?> />
</a>
</div>
<!--[I want to get two images in mainrow]-->
<div class="block">
<a href='<?php echo $big_image[0]; ?>' class='cloud-zoom-gallery' title='Thumbnail 1' rel="useZoom: 'zoom1', smallImage: '<?php echo $small_image[0]; ?>' ">
<img src="<?php echo $attachment[0]; ?>" <?php echo $attributes; ?> />
</a>
</div>
</div>
<?php //the_attachment_link($image->ID, false, true, false); ?>
<?php }
}
?>
所以我想要的是,如果有两个以上的图像,它将重复整个html结构。非常感谢您的帮助我从您的评论中了解到,您希望每行显示两个图像,如果有一个额外的图像,则在最后一行的图像旁边显示一个占位符 你所需要的只是一个有多少图像的计数,以及它是偶数还是奇数。然后,当您知道自己位于最后一张图像时(使用递增计数器),添加占位符: 代码没有做的是在一行中放置两个图像。为此,我们还需要取计数器的模(
%
)
<?php
$counter = 0;
$imgCount = count($images);
foreach ($images as $image) {
$attachment = wp_get_attachment_image_src($image->ID, 'thumbnail');
$small_image = wp_get_attachment_image_src($image->ID, 'midium');
$big_image = wp_get_attachment_image_src($image->ID, 'full');
if ($counter % 2 == 0): ?>
<div class="mainrow">
<?php endif; ?>
<div class="block">
<a href='<?php echo $big_image[0]; ?>' class='cloud-zoom-gallery' title='Thumbnail 1' rel="useZoom: 'zoom1', smallImage: '<?php echo $small_image[0]; ?>' ">
<img src="<?php echo $attachment[0]; ?>" <?php echo $attributes; ?> />
</a>
</div>
<?php if ($counter++ % 2 == 1): ?>
</div>
<?php endif; ?>
<?php //the_attachment_link($image->ID, false, true, false); ?>
<?php
}
// Since (if there are an odd number of images) the loop may not close the <div>,
// we have to make sure it does.
if ($counter % 2 == 0) {
?>
<!-- placeholder goes here -->
</div>
<?php
}
所以,你的意思是,你只希望foreach
中的输出每隔n次输出一次?我的意思是,就像我有5个图像一样,在第一个“mainrow”中,它将在“block”中显示前两个图像,第三个和第四个将再次创建第二个“mainrow”,并将在“block”中显示,而不是第五个图像再次创建第三个“mainrow”并将再次生成两个“块”,但其中一个包含第5个图像,另一个将为空(这是我的结构所必需的),这将正常运行,因此基本上,如果$count%2==1
您希望插入一个“占位符”,而不是尝试在行中放置图像?是,原因是将有多少附件,这是未知的,因此无论有多少附件,它都将保持每个主线两个块。使用var\u dump()
仔细检查$images
数组。确保ID都是正确的,等等。程序是正确的,您可能只需要消除一些关于如何访问数据的错误。我得到的所有图像都没有这个结构,但当我添加这个html结构时(我在“block”div中添加了两次图像标记),它会呈现相同的图像两次(这很明显)如果($count>2)中断,if后
停止渲染rest图像。OK edited-我忘了循环不会关闭div
,除非图像数量为偶数。如果有奇数的图像,你必须从外部关闭它。好的,非常感谢等待新代码。。。哦,已经有了,让我查一下