Laravel foreach循环字符串无法追加仅保留最后值问题排查
问题分析与解决办法
嘿,我一眼就瞅出问题所在啦!你每次进入符合条件的循环时,都会先把$crosslisted_courses重置为空字符串——这就是为什么变量没法追加内容,最后只保留了最后一次循环值的原因!
问题根源
你的代码里,$crosslisted_courses = '';是写在@foreach循环内部的@php块里的。每次循环到满足if条件的项时,都会先清空这个变量,再把当前项的内容加进去,相当于每次都从头开始存,自然留不住之前的内容。
修复后的代码
只需要把变量的初始化移到循环外面,就能实现追加效果了:
@php // 提前在循环外初始化变量,避免每次循环清空 $crosslisted_courses = ''; @endphp @foreach($fmfacactinss as $fmfacactins_slave) @if(($fmfacactins_slave->xlist_ctrl_crn == $master_crn) && ($fmfacactins_slave->crn != $master_crn) ) @php $slave_crn = $fmfacactins_slave->crn; // 直接追加当前课程信息,不用再重置变量 $crosslisted_courses .= $fmfacactins_slave->crs_subj_cd . ' ' . $fmfacactins_slave->crs_nbr . ' ' . $fmfacactins_slave->sect_nbr . ' '; // 这里可以实时输出每次追加后的结果 echo($crosslisted_courses); @endphp @endif @endforeach // 如果需要在循环结束后输出完整的合并结果,直接用Blade语法输出即可 {{ trim($crosslisted_courses) }}
额外优化小提示
如果担心最后拼接的字符串末尾有多余的空格,可以用trim()函数去掉,就像上面代码最后一行那样。另外,PHP里<>和!=是等价的,用!=可读性会更好一点哦~
内容的提问来源于stack exchange,提问作者Naishu Babu
相关产品推荐
相关产品推荐

