Smarty foreachサイクル回数初回末回

1296 ワード

foreach,foreachelse  
{foreach from=$variable key=key name=name iteam=value}

    {$variable|@count}     //       

    {$smarty.foreach.loop.iindex}    //             , 0  

    {$smarty.foreach.loop.iteration}    //         , 1  

    {$smarty.foreach.loop.first}    //  true ,         

    {$smarty.foreach.loop.last}    //  true ,          
 {$smarty.foreach.name.last}    //  true ,          

    {$smarty.foreach.loop.show}    //       

    {$smarty.foreach.loop.total}    //     

{/foreach}

 
_______________________ Smartyで配列の長さを取得する方法:前提仮定:Smartyに配列arrayが割り当てられ、Smartyの境界記号が'{'と'}'であると仮定します.多くの資料では,Smartyで配列の長さを要求する場合,配列の後に|countを付ける方法で呼び出すことができる.すなわち、arrayの長さは{array|count}によって得られる.しかし、今日テンプレートを書くと、配列の長さが得られず、返される文字列Arrayが得られるだけであることがわかりました.すなわち,{array}の結果だけが返され,そのarrayの長さは返されない.smartypluginsフォルダを表示すると、countに関するメソッドはありません.つまり、countはphpのメソッドを直接呼び出しています.その後,ネットワーク上の資料からcountの前に@を付けることができ,配列の長さを正確に取得できることが分かった.さらにSmartyのソースコードを見ると、Smartyがプロパティレギュレータの後のメソッド名を処理すると、前に@を付ける特殊な処理が行われることがわかります.したがって,Smartyのプロパティレギュレータでphpで定義した関数を呼び出す場合,@を付けて表すことができると判断した.タイプが配列の方法をテストしたところ、@記号を付けないとエラーが発生することがわかりました.たとえば、1つの配列に対してcountメソッドを呼び出して配列の長さを求める場合は{array|@count}を呼び出し、配列に対してendメソッドを呼び出して配列の最後のデータのセットを得る場合は{array|@end}を呼び出すことができます.