Codeigniter3中使用foreach如何让数组首个元素与其他元素展示不同
实现方案
你可以通过以下两种方式完成需求,推荐使用第一种方案逻辑更简洁:
方案1:单独取首元素渲染头条,截取剩余元素渲染列表
利用PHP原生array_slice()函数直接截取第二个及之后的数组元素遍历,不需要循环内额外判断,执行效率更高:
<div class="editor-choice"> <div class="headsection">EDITOR’S CHOICE</div> <!-- 先判断数组非空避免报错 --> <?php if (!empty($editorchoice)): ?> <!-- Headline Editor Choice 头条区域 --> <article class="headline-editor-choice"> <a href="<?php echo $editorchoice[0]['link']; ?>"> <div class="img-headline-editor-choice"> <img src="<?php echo image_uri().'/okz/900/'.str_replace("thumb","master",@$editorchoice[0]['image_content']); ?>" alt="img-news"> </div> </a> <div class="detail-headline-editor-choice"> <!-- 分类、日期字段请根据你实际数组的字段名替换 --> <a href="<?php echo site_url($editorchoice[0]['category_slug']); ?>" class="category pb-0"><?php echo $editorchoice[0]['category_name']; ?></a> <span class="date"><?php echo $editorchoice[0]['post_date']; ?></span> <div class="title-article title-editor-choice-headline"> <a href="<?php echo $editorchoice[0]['link']; ?>" class="title" style="-webkit-box-orient: vertical;"><?php echo $editorchoice[0]['title']; ?></a> </div> </div> </article> <!-- List Editor Choice 列表区域 --> <?php // 截取从下标1开始的所有元素,即第二个及之后的内容 $list_data = array_slice($editorchoice, 1); foreach ($list_data as $kuy => $val) { ?> <article class="list-editor-choice"> <div class="img-editor-choice"> <a href="<?php echo $val['link']; ?>"> <img src="<?php echo image_uri().'/okz/900/'.str_replace("thumb","master",@$val['image_content']); ?>" alt="img-news"> </a> </div> <div class="detail-editor-choice"> <div class="title-article title-editor-choice"> <a href="<?php echo $val['link']; ?>" class="title" style="-webkit-box-orient: vertical;"><?php echo $val['title']; ?></a> </div> <div class="warp-date-article"> <div class="ico-calendar"><img src="<?php echo base_url(); ?>assets/mobile/images/icon/calender.svg"> </div> <div class="date-article"><?php echo $val['post_date']; ?></div> </div> </div> </article> <?php } ?> <?php endif; ?>
方案2:循环内判断下标跳过首元素
如果你不想额外生成新的数组变量,也可以在原有循环内判断下标跳过第一个元素即可:
<?php foreach ($editorchoice as $kuy => $val) { if ($kuy === 0) continue; // 直接跳过第一个元素 ?> <!-- 原有列表渲染逻辑保持不变 --> <?php } ?>
内容的提问来源于stack exchange,提问作者Fathul Muiin
相关产品推荐
相关产品推荐

