skinny

in_gl_A

Skinny タグマニュアル

each - 配列の繰り返し

多次元配列をループする処理を行います。

説明

書式

each(argument)

パラメータ

argument : ループ対象の配列

説明

このタグは、データベースのテーブル構造を意識した連想配列をレコード単位にループして処理する際に利用します。
実際に使用する前に、defタグでレコードが存在するかチェックする事を推奨します。

eachは下記のサンプルで示すPHPコードの、$out['list']と同じ構造を持った2次元配列をループさせる処理タグで、利用する場面の九割五分は「DBから取得したデータをリスト表示」する場面です。

それ以外で利用する場面は、「CSV等のファイル内容を表示する時」「ディレクトリ構造を表示する時」などかなり限定的で使用頻度はかなり低いのが現実です。
ならば闇雲にテンプレートタグを増やすのではなく、リスト処理する配列は共通な構造に統一する様にPHPを組んで欲しい。という思いがここにあります。

その為、Skinnyには foreach( $value as $k => $v ) のような一次配列をループするタグは用意していませんので、ループさせたい場合はeachタグに渡せる構造の配列を作るようにしてください。
実はあるんだけどね。FAQに書いたからソース読めるならkeach/kechoで検索してね。
今回のサンプルはDB構造をイメージした配列を自前で用意する一例です。

Ver0.4.0~

このタグの終了タグに短縮書式 <% / %>が使用できます。

サンプル

PHPコード

<?php
    include_once( "Skinny.php" );
    $out = array();
    
    // DBのテーブル構造を意識した配列
    $out['list'][] = array('id'=>100, 'lname'=>'雷電','fname'=>'太郎' );
    $out['list'][] = array('id'=>101, 'lname'=>'佐藤','fname'=>'一郎' );
    $out['list'][] = array('id'=>102, 'lname'=>'田中','fname'=>'裕子' );
    $out['list'][] = array('id'=>103, 'lname'=>'鈴木','fname'=>'雄二' );
    
    $Skinny->SkinnyDisplay( "each_sample.html", $out );
?>

テンプレート

<% def(list) %>
    <% each(list) %>
        No.<% echo(list/id) %><% echo(list/lname) %> <% echo(list/fname) %><br />
    <% /each %>
<% elsedef %>
    データはありません<br />
<% /def %>

ブラウザ結果

No.100:雷電 太郎
No.101:佐藤 一郎
No.102:田中 裕子
No.103:鈴木 雄二

btn_pagetop