Smartyのforeachの心得


require_once('./Smarty/libs/Smarty.class.php');
$db_host='localhost';
$db_user='root';
$db_password='';
$db_name='test';
mysql_connect($db_host,$db_user,$db_password); //     
mysql_select_db($db_name); //     
$sql="select * from posts";
$result=mysql_query($sql); //  
$smarty=new Smarty(); //      $smarty  
$smarty->templates_dir='templates'; //      
$smarty->compile_dir='templates_c'; //      
$smarty->left_delimiter='{'; //    ,        
$smarty->right_delimiter='}'; //    

//    
while($row=mysql_fetch_array($result))
{$record[]=array(
    'title'=>$row['title'],
'body'=>$row['body'],);
}
$smarty->assign('yes', $record);//        ,  $record  yes
$smarty->display('test.tpl');
?>
 
//----------test.tpl---------
{foreach item=news from=$yes}
{$news.title}:{$news.body}
<br>
{/foreach}
 
以前Smartyの中のforeachに対して少し云の中で雾の中で、今日特にフォーラムの上で1つの辉のボスの出したテーマを探し出して少ししました~~缲り返しのテストを経て、ついにこのforeachの原理を理解しましたが、実际には、その他のいくつかのパラメータはまだ试験していないで、普通は最も多く使います
いずれもこの2つのパラメータitemとfromです.ここでitemはサイクル数を決定し、fromの値は$smarty->assignから置換変数であり、上のyes、test.tplテンプレートのfromはyesでなければなりません.そうしないとtestで値を受信できません.tplでitemは
何、次の$news.titleはitemの値と同じでなければなりません.配列の下付き文字でループしない限り、結果を出力できません.