Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP+;foreach在每n次之后重复html结构_Php_Wordpress_Loops_Foreach_Repeat - Fatal编程技术网

PHP+;foreach在每n次之后重复html结构

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();

我试图在foreach循环中实现下面的结构,在每两个图像之后,它将重复整个结构

我有一些可以使用的基本知识,例如计数器++;和%2,但不知道语法以及如何在代码中使用它

<?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
,除非图像数量为偶数。如果有奇数的图像,你必须从外部关闭它。好的,非常感谢等待新代码。。。哦,已经有了,让我查一下