迅睿框架 版主:迅睿框架研发组
当前栏目多文件循环 想改为 从第五个开始循环 共显示
类型:迅睿CMS 更新时间:2025-10-20 11:14:36

<?php if ($cat['cptdtw']) { $key=0;foreach ($cat['cptdtw'] as $c) { ?>

<div class="feature-item">

              <p><img height="70" src="{dr_get_file($c.file)}" /></p>

              <p class="{$c.title}">{$c.title}</p>

            </div>

              <?php $key++;} } ?>  当前栏目多文件循环 想改为  从第五个开始循环  共显示6个数据 咋改呢?

回帖
  • 迅睿官方技术专家
    #1楼    迅睿官方技术专家
    2025-10-19 16:18:17
    Chrome 0
    num=5,6
  • 靠谱小青年
    #2楼    靠谱小青年
    2025-10-20 10:54:59
    Chrome 0
    迅睿官方技术专家 <?php if ($cat['cptdtw']) { $key=0;foreach ($cat['cptdtw'] as $c) num=5,6 { ?> <div class="feature-item"> <p><img height="70" src="{dr_get_file($c.file)}" /></p> <p class="{$c.title}">{$c.title}</p> </div> <?php $key++;} } ?> 这样吗?
  • 迅睿官方技术专家
    #3楼    迅睿官方技术专家
    2025-10-20 11:05:16
    Chrome 0

    参考文档:《数组剪切函数 dr_arraycut》
    <?php if ($cat['cptdtw']) { $cat['cptdtw']=dr_arraycut($cat['cptdtw'], '5,11');$key=0;foreach ($cat['cptdtw'] as $c) { ?>
    这种php代码的,可以找ai帮你改写就行了
  • 靠谱小青年
    #4楼    靠谱小青年
    2025-10-20 11:10:27
    Chrome 0
    迅睿官方技术专家 <?php if ($cat['cptdtw']) { $cat['cptdtw']=dr_arraycut($cat['cptdtw'], '0,5');$key=0;foreach ($cat['cptdtw'] as $c) { ?> <div class="feature-item"> <p><img height="70" src="{dr_get_file($c.file)}" /></p> <p class="{$c.title}">{$c.title}</p> </div> <?php $key++;} } ?> <?php if ($cat['cptdtw']) { $cat['cptdtw']=dr_arraycut($cat['cptdtw'], '5,11');$key=0;foreach ($cat['cptdtw'] as $c) { ?> <div class="feature-item"> <p><img height="70" src="{dr_get_file($c.file)}" /></p> <p class="{$c.title}">{$c.title}----</p> </div> <?php $key++;} } ?>同时存在二组的话 只有一组生效呢?
  • 迅睿官方技术专家
    #5楼    迅睿官方技术专家
    2025-10-20 11:12:01
    Chrome 0
    $cat['cptdtw']把这个赋值一个新的值呀,不要被二次覆盖就行
    满意答案
  • 靠谱小青年
    #6楼    靠谱小青年
    2025-10-20 11:12:20
    Chrome 0
    @迅睿官方技术专家:搞定 {$c.title} {$c.title}----
  • 小波工作室
    #7楼    小波工作室
    2025-10-20 11:14:36
    Chrome 0
    出现 “两组代码同时存在时只有一组生效” 的核心原因是:第一组代码修改了$cat['cptdtw']的原始值,导致第二组代码处理的是被截断后的数组,无法获取到正确的元素

    具体分析:

    1. 第一组代码中,$cat['cptdtw'] = dr_arraycut(...) 这行代码直接修改了原始数组,将其截断为 “0-5” 的部分(即前 5 条数据)。
    2. 第二组代码再次判断 $cat['cptdtw'] 时,此时的$cat['cptdtw']已经是第一组截断后的结果(只有 5 条数据)。
    3. 当第二组执行 dr_arraycut($cat['cptdtw'], '5,11') 时,由于原始数组已被截断为 5 条(索引 0-4),从索引 5 开始截取自然会得到空数组,因此第二组循环不会执行,最终只有第一组生效。

    解决方案:

    保留原始数组,对原始数组进行 “分别截取”,避免修改原始变量。可以通过临时变量保存原始数据,再分别处理:php
    <?php // 保存原始数组到临时变量,避免被修改$original_cptdtw = $cat['cptdtw'] ?? [];// 第一组:截取0-5的部分(前5条)if ($original_cptdtw) { 
        $first_part = dr_arraycut($original_cptdtw, '0,5');
        $key=0;
        foreach ($first_part as $c) { ?><div class="feature-item">
        <p><img height="70" src="{dr_get_file($c.file)}" /></p>
        <p class="{$c.title}">{$c.title}</p></div><?php 
        $key++;
        } } // 第二组:截取5-11的部分(从第5条开始,取6条)if ($original_cptdtw) { 
        $second_part = dr_arraycut($original_cptdtw, '5,11');
        $key=0;
        foreach ($second_part as $c) { ?><div class="feature-item">
        <p><img height="70" src="{dr_get_file($c.file)}" /></p>
        <p class="{$c.title}">{$c.title}----</p></div><?php 
        $key++;
        } } ?>

    关键原理:

    通过 $original_cptdtw = $cat['cptdtw'] ?? [] 保存原始数组,两组代码分别从原始数组中截取不同范围的元素,彼此不干扰,最终两组循环都会正常执行。AI编程才是大师