多次元配列をループする処理を行います。
each(argument)
argument : ループ対象の配列
このタグは、データベースのテーブル構造を意識した連想配列をレコード単位にループして処理する際に利用します。
実際に使用する前に、defタグでレコードが存在するかチェックする事を推奨します。
eachは下記のサンプルで示すPHPコードの、$out['list']と同じ構造を持った2次元配列をループさせる処理タグで、利用する場面の九割五分は「DBから取得したデータをリスト表示」する場面です。
それ以外で利用する場面は、「CSV等のファイル内容を表示する時」「ディレクトリ構造を表示する時」などかなり限定的で使用頻度はかなり低いのが現実です。
ならば闇雲にテンプレートタグを増やすのではなく、リスト処理する配列は共通な構造に統一する様にPHPを組んで欲しい。という思いがここにあります。
その為、Skinnyには foreach( $value as $k => $v ) のような一次配列をループするタグは用意していませんので、ループさせたい場合はeachタグに渡せる構造の配列を作るようにしてください。
実はあるんだけどね。FAQに書いたからソース読めるならkeach/kechoで検索してね。
今回のサンプルはDB構造をイメージした配列を自前で用意する一例です。
このタグの終了タグに短縮書式 <% / %>が使用できます。
<?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:鈴木 雄二