ホームページ >バックエンド開発 >PHPチュートリアル >2 つの foreach をループするにはどうすればよいですか?
マルチユーザー モール システムを使用しています。現在、第 1 レベルのストア カテゴリの下にある第 2 レベルのカテゴリを循環させ、同時に現在の第 2 レベルのカテゴリ内の推奨ストアを自動的に読み取りたいと考えています。第 2 レベルのカテゴリはどう書けばよいでしょうか?以下に示すように:
コードは次のとおりです:
<div class="louceng"> <?php if(!empty($output['class_list']) && is_array($output['class_list'])){ $i = 0; ?> <?php foreach($output['class_list'] as $k=>$v){ $i++; ?> <div class="floor_area"> <?php if ($_GET['cate_id'] == $v['sc_parent_id']){ ?> <h2><?php echo $i;?>F <?php echo $v['sc_name'];?></h2> <?php if(!empty($output['store_list']) && is_array($output['store_list'])){?> <ul> <?php foreach($output['store_list'] as $skey => $store){?> <li><a href="<?php echo ncUrl(array('act'=>'show_store','id'=>$store['store_id']),'store',$store['store_domain']);?>" title="" target="_blank"><span class="thumb size72"> <img src="<?php echo SiteUrl.'/'.(ATTACH_PATH.DS.'ad'.DS.$store['shopad']);?>" onload="javascript:DrawImage(this,240,240);" /></span></a> </li> <?php }?> </ul> <div class="clear"></div> <?php }?> <?php }elseif (!isset($v['child']) && $output['class_list'][$_GET['cate_id']]['sc_parent_id'] == $v['sc_parent_id']){?> <h2><?php echo $v['sc_name'];?></h2> <?php }?> </div> <?php }?> <?php }?></div>
あなたのコードは実装できませんか? $output の内容を投稿
$i++; in foreach($output['class_list'] as $k=>$v){ ループ内で無条件に実行
echo $i in if ($_GET['cate_id'; ] == $v['sc_parent_id']){ ブランチ内で条件付き実行
条件が真でない可能性があるため、echo $i; は連続しない可能性があります
$i はシーケンス番号を表すため、$i++ の 9 行
を削除し、14 行目の echo $i; を echo ++$i に変更します
27cdd53838f652888344ed64691fc510$v){ ループ内で無条件に実行
条件が真でない可能性があるため、echo $i; は連続しない可能性があります
$i はシーケンス番号を表すため、$i++ の 9 行を削除する必要があります
そして 14 行目の echo $i; は echo ++$i に変更されます
あなたのコードは実装できませんか? $output の内容を投稿
$i++; in foreach($output['class_list'] as $k=>$v){ ループ内で無条件に実行
echo $i in if ($_GET['cate_id'; ] == $v['sc_parent_id']){ ブランチ内で条件付き実行
条件が真でない可能性があるため、echo $i; は連続しない可能性があります
$i はシーケンス番号を表すため、$i++ の 9 行削除する必要があります
$i はすでに正常です、ありがとうございます。サブカテゴリのおすすめストアの見方を教えてください。初心者ですが、ハイハンお願いします
あなたのコードは実装できませんか? $output の内容を投稿
$i++; in foreach($output['class_list'] as $k=>$v){ ループ内で無条件に実行
echo $i in if ($_GET['cate_id'; ] == $v['sc_parent_id']){ ブランチ内で条件付き実行
条件が真でない可能性があるため、echo $i; は連続しない可能性があります
$i はシーケンス番号を表すため、$i++ の 9 行削除する必要があります
そして、14 行目の echo $i; を echo ++$i に変更しました
b69808d74c7ab68b9f76b7d740ed4629 に変更しました) ; $store)
$condition['store_state'] = 1;
$condition['sc_id'] = 66; $condition)-> ;order($order)->page(10)->select();
これで、sc_id=66 でストアを読み取ることができますが、現在のカテゴリ ID を取得してフィルターするにはどうすればよいでしょうか? f9500c9af13661c4853fe3d033e895f1 現在のカテゴリの sc_id を取得できるようです
$output の内容 (少なくとも完全なセクション) を投稿し、どれをどこに配置するかを説明する必要があります
你应该贴出 $output 的内容(至少需要完整的一节),并说明哪个要放在哪里
下面的代码是模板文件的,如何将第一个循环中的$k值传递到第二个循环中的 $where .= "$sc_id = $k"; 件红色部分。
3楼我贴出的是PHP的处理文件
3d9bf1c058fcad89c7d61025efab693d
5f49eae3f5334bdce70cec3283fae9d0
f7cda07bd0385db5de2905b76b2e1f49$v){
?>
f773fd1b0e291fd927acb7a02f72533f
839daed98b5507f847bf16dbbe1b1654
c1a436a314ed609750bd7c7d319db4da15134e67a0562653441b45b9845ba952F 2737637e399ee6c8e6797490b8619817 592578c71b3672ea1b57eff1008f969a75b72b7f2a2fc74f205cbef22d373a81'shop_search','cate_id'=>$k));?>" style="float:right" target="_blank">更多..5db79b134e9f6b82c0b36e0489ee08ed2e9b454fa8428549ca2e64dfac4625cd
136002956c8d109d5ba1aae59af83800
ff6d136ddc5fdfeffaf53ff6ee95f185
9062be940b76e47809bfa626bbe3a58f $store){
$where .= "$sc_id = $k";
?>
25edfb22a4f469ecb59f1190150159c6d70491754e35c654a393989bd2bd05515dbb7b53f7c84430d6074a2047cf783175b72b7f2a2fc74f205cbef22d373a81'show_store','id'=>$store['store_id']),'store',$store['store_domain']);?>" title="" target="_blank">d434d9b199218aff78c144b951fb25ba
951e6b71eeaed0c7a938e78dd53dac0d" onload="javascript:DrawImage(this,240,240);" />54bdf357c58b8a65c66d7c19c8e4d1145db79b134e9f6b82c0b36e0489ee08ed
bed06894275b65c1ab86501b08a632eb
b517c7019a86fd2c96d2a5cf3002de78
929d1f5ca49e04fdcb27f9465b944689
b290447e7000d86b8a773a5f533d586516b28748ea4df4d9c2150843fecfba68
b517c7019a86fd2c96d2a5cf3002de78
b186a3ccaa19759fd140c05e2e1b30e3
c1a436a314ed609750bd7c7d319db4da592578c71b3672ea1b57eff1008f969a2e9b454fa8428549ca2e64dfac4625cd
b517c7019a86fd2c96d2a5cf3002de78
16b28748ea4df4d9c2150843fecfba68
b517c7019a86fd2c96d2a5cf3002de78
b517c7019a86fd2c96d2a5cf3002de78
16b28748ea4df4d9c2150843fecfba68
要看到你的数据!
光看代码有什么用?如果代码就写错了呢
经验证上面的方法不行,
模板文件的代码是:
<div class="louceng"> <?php if(!empty($output['class_list']) && is_array($output['class_list'])){ $i = 0; ?> <?php foreach($output['class_list'] as $k=>$v){ ?> <div class="floor_area"> <?php if ($_GET['cate_id'] == $v['sc_parent_id']){ $Sid= $k; ?> <h2><?php echo ++$i;?>F <?php echo $v['cate_id'];?> <?php echo $v['sc_name'];?><a href="<?php echo ncUrl(array('act'=>'shop_search','cate_id'=>$k));?>" style="float:right" target="_blank">更多..</a></h2> <?php if(!empty($output['store_list']) && is_array($output['store_list'])){?> <ul> <?php foreach($output['store_list'] as $skey => $store){?> <li><?php echo $Sid;?><a href="<?php echo ncUrl(array('act'=>'show_store','id'=>$store['store_id']),'store',$store['store_domain']);?>" title="" target="_blank"><span class="thumb size72"> <img src="<?php echo SiteUrl.'/'.(ATTACH_PATH.DS.'ad'.DS.$store['shopad']);?>" onload="javascript:DrawImage(this,240,240);" /></span></a> </li> <?php }?> </ul> <div class="clear"></div> <?php }?> <?php }elseif (!isset($v['child']) && $output['class_list'][$_GET['cate_id']]['sc_parent_id'] == $v['sc_parent_id']){?> <h2><?php echo $v['sc_name'];?></h2> <?php }?> </div> <?php }?> <?php }?></div>
//店铺搜索 $model = Model(); $condition = array(); $keyword = trim($_GET['keyword']); if(C('fullindexer.open') && !empty($keyword)){ //全文搜索 $condition = $this->full_search($keyword); }else{ if ($keyword != ''){ $condition['store_name|store_zy'] = array('like','%'.$keyword.'%'); } if ($_GET['user_name'] != ''){ $condition['member_name'] = trim($_GET['user_name']); } } if (!empty($_GET['area_id'])){ $condition['area_id'] = array('in',$this->getAreaNextId(intval($_GET['area_id']))); } if ($_GET['cate_id'] > 0){ $child = array_merge((array)$class_list[$_GET['cate_id']]['child'],array($_GET['cate_id'])); $condition['sc_id'] = array('in',$child); } $storeid=array($Sid); $condition['store_state'] = 1; $condition['store_recommend'] = 1; if (!in_array($_GET['order'],array('desc','asc'))){ unset($_GET['order']); } if (!in_array($_GET['key'],array('store_sales','store_credit'))){ unset($_GET['key']); } if(is_null($_GET['key'])){ $order = 'store_sort asc'; }else{ $order = $_GET['key'].' '.$_GET['order']; } if (isset($condition['store.store_id'])){ $condition['store_id'] = $condition['store.store_id'];unset($condition['store.store_id']); } $model_store = Model('store');// $store_list = $model_store->where($condition)->order($order)->page(10)->select(); 20140408 bak $store_list = $model_store->where($condition)->order($order)->page(10)->select(); //获取店铺商品数,推荐商品列表等信息 $store_list = $model_store->getStoreSearchList($store_list); Tpl::output('store_list',$store_list); Tpl::output('show_page',$model->showpage(2));
查询是要按按显示的要求进行的
你只要打印出查询得到的最终数据,就可知道是否符合显示的要求
二次开发的话,可以调用系统栏目的函数啊,不用自己写
自己解决了,用了一个很笨的办法 用if进行判断!!代码如下:红色部分
5f49eae3f5334bdce70cec3283fae9d0
eeacc72bb7ee0b1188f9043ea566289d$v){
?>
f773fd1b0e291fd927acb7a02f72533f
ad9accb197a94613234515004b61669b
c1a436a314ed609750bd7c7d319db4da15134e67a0562653441b45b9845ba952F 2737637e399ee6c8e6797490b8619817 592578c71b3672ea1b57eff1008f969a75b72b7f2a2fc74f205cbef22d373a81'shop_search','cate_id'=>$k));?>" style="float:right" target="_blank">更多..5db79b134e9f6b82c0b36e0489ee08ed2e9b454fa8428549ca2e64dfac4625cd
136002956c8d109d5ba1aae59af83800
ff6d136ddc5fdfeffaf53ff6ee95f185
d75c8d7ec839a8f76ce7fd7ff1c70e72 $store){?>
413ccaa3b3e65f369aac980f6d1406d5
25edfb22a4f469ecb59f1190150159c675b72b7f2a2fc74f205cbef22d373a81'show_store','id'=>$store['store_id']),'store',$store['store_domain']);?>" title="" target="_blank">d434d9b199218aff78c144b951fb25ba
951e6b71eeaed0c7a938e78dd53dac0d" onload="javascript:DrawImage(this,240,240);" />54bdf357c58b8a65c66d7c19c8e4d1145db79b134e9f6b82c0b36e0489ee08ed
bed06894275b65c1ab86501b08a632eb
b517c7019a86fd2c96d2a5cf3002de78
b517c7019a86fd2c96d2a5cf3002de78
929d1f5ca49e04fdcb27f9465b944689
b290447e7000d86b8a773a5f533d586516b28748ea4df4d9c2150843fecfba68
b517c7019a86fd2c96d2a5cf3002de78
b186a3ccaa19759fd140c05e2e1b30e3
c1a436a314ed609750bd7c7d319db4da592578c71b3672ea1b57eff1008f969a2e9b454fa8428549ca2e64dfac4625cd
b517c7019a86fd2c96d2a5cf3002de78
16b28748ea4df4d9c2150843fecfba68
6e3d70b845fce8e22f2cfab7e464cfc5
6e3d70b845fce8e22f2cfab7e464cfc5