ホームページ >バックエンド開発 >PHPチュートリアル >ThinkPHP 学習 (4) Volist Tag の高度なアプリケーションのための複数の入れ子ループ_PHP チュートリアル
アクション コード:
public function index(){ $prod = I("get.prod_en"); $id = I("get.id", 0, "int"); if ($prod == ""){ $serviceProduct = array();//多重循环遍历的数组
//数据保存在两张表中,这里通过循环初始化$serviceProduct数组 $service = M("product_class")->order("oid ASC")->select(); for ($i = 0; $i < count($service); $i++) { array_push($serviceProduct, array("srvName"=>$service[$i]["pc_cn"], "product"=>M("product")->where("prod_class_id=".$service[$i]["pcid"])->order("oid ASC")->select())); }
//如果要在模板中输出变量,必须在在控制器中把变量传递给模板,系统提供了assign方法对模板变量赋 值,无论何种变量类型都统一使用assign赋值。 $this->assign("serviceProduct", $serviceProduct); $this->display(); }else{ if ($id > 0){ $this->display("detail"); }else{ $this->assign('prod_en', $prod); $clsList = M("question_class")->order("oid ASC")->select(); $this->assign('clsList', $clsList); $qusList = M("question")->order("oid ASC")->select(); $this->assign('qusList', $qusList); $this->display("list"); } } }テンプレート コード:
<volist name="serviceProduct" id="sp" key="i"> <dl class="dlist odd"> <dt>{$sp.srvName}</dt> <volist name="sp.product" id="pd" key="j"> <dd>{$pd.prod_cn}</dd> <if condition="$j lt count($sp['product'])"> <dd>|</dd> </if> </volist> <if condition="count($sp['product']) EQ 0"> <dd> </dd> </if> </dl> </volist>複数のネストされたループを使用する場合、各ボリストのキー値を指定し、
<if condition="$j lt count($sp['product'])">を使用してそれが配列内の最後の要素であるかどうかを判断する必要があります。