ホームページ > バックエンド開発 > PHPチュートリアル > 2 つの foreach をループするにはどうすればよいですか?

2 つの foreach をループするにはどうすればよいですか?

WBOY
リリース: 2016-06-23 13:59:05
オリジナル
1899 人が閲覧しました

マルチユーザー モール システムを使用しています。現在、第 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>
ログイン後にコピー


さらに1から始めてみませんか?


ディスカッションへの返信 (解決策)

あなたのコードは実装できませんか? $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 に変更します
$v){

? ;

ここにループが 1 つしかなく、$i=0 を初期化しない限り、なぜ 1 から始まるのでしょうか?

コードが機能しませんか? $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 に変更されます

あなたのコードは実装できませんか? $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 に変更されます

$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 に変更しました
に変更しました) ; $store)

$condition['store_state'] = 1;
$condition['sc_id'] = 66; $condition)-> ;order($order)->page(10)->select();

これで、sc_id=66 でストアを読み取ることができますが、現在のカテゴリ ID を取得してフィルターするにはどうすればよいでしょうか? 現在のカテゴリの sc_id を取得できるようです

$output の内容 (少なくとも完全なセクション) を投稿し、どれをどこに配置するかを説明する必要があります

你应该贴出 $output 的内容(至少需要完整的一节),并说明哪个要放在哪里

下面的代码是模板文件的,如何将第一个循环中的$k值传递到第二个循环中的 $where .= "$sc_id = $k"; 件红色部分。

3楼我贴出的是PHP的处理文件


$i = 0;
?>

$v){
?>

?>

F 更多..





    $store){
    $where .= "$sc_id = $k";
    ?>
















要看到你的数据!
光看代码有什么用?如果代码就写错了呢

经验证上面的方法不行

模板文件的代码是:

<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>
ログイン後にコピー


店铺搜索PHP的代码是

//店铺搜索		$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));
ログイン後にコピー


麻烦帮忙看看如何循环出当前分类下的推荐店铺,现在的关键是如果将模板中第一个foreach的$k 传递到第二个foreach中进行筛选。筛选的关键代码是
$condition['store_state'] = 1;
$condition['store_recommend'] = 1;

查询是要按按显示的要求进行的
你只要打印出查询得到的最终数据,就可知道是否符合显示的要求

二次开发的话,可以调用系统栏目的函数啊,不用自己写

自己解决了,用了一个很笨的办法 用if进行判断!!代码如下:红色部分

$i = 0;
?>

      $v){
  ?>
         

 
       $Sid= $k;
?>
      

 更多..


             
             
                 
                 
                  $store){?>
                    
                 

  •              

                 

  •              
                 
                 

             

             
      
      


      
        



関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート