douqu2481 2014-05-07 00:26
浏览 30
已采纳

按foreach中的第一个字符对行进行分组

I have foreach loop

{foreach from=$rootCategories item=category}
    <li id="parentCategory" data-category="{$category.id_category}">
        <span>
            <img alt="{$category.name}" src="{$base_dir}img/c/{$category.id_category}.jpg" width='46' height='26'>
            <h1>{$category.name}</h1>
        </span>
    </li>                               
    {/foreach}

Current output is:

Ajp Alter beta black cpanle cupa

I want it to be

A Ajp Alter
B beta black
C cpanle cupa

I have used that code in foreach

$lastFoundLetter = ''; 
$firstLetter = {$category.name|substr:0:1} 
{if {$firstLetter} != {$lastFoundLetter}} //you've started a new letter category
 {if {$lastFoundLetter} != ''} //if there's a real value in $lastFoundLetter, we need to close the previous div </div>
 {/if } 
<div id="{$firstLetter}"> {$firstLetter} "<br/>"
{ $lastFoundLetter} = {$firstLetter}; </div> 
{/if}

but its not working i think i have used wrong code.Guys plz help me

  • 写回答

2条回答 默认 最新

  • dqu92800 2014-05-07 02:02
    关注

    Code for changed question :

    {assign  var = 'lastFoundLetter' value= ''}
    {foreach from=$rootCategories item=category}
    {assign  var = 'curFirstLetter' value= {$category.name|substr:0:1|upper}}
    
    {if $curFirstLetter neq $lastFoundLetter} 
        {if $lastFoundLetter neq ''}<br />{/if}
        {$curFirstLetter}
        {assign  var = 'lastFoundLetter' value=$curFirstLetter} 
    {/if}
    {$category.name}
    {/foreach}
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部