Php 如何计算foreach循环递归中的行?
下面的代码返回类别树 如何获得每个类别中有子类别的产品数量?我的意思是对每个子类别中的值求和 到目前为止,我只成功获得了最后一级子类别的计数:Php 如何计算foreach循环递归中的行?,php,mysql,recursion,foreach,Php,Mysql,Recursion,Foreach,下面的代码返回类别树 如何获得每个类别中有子类别的产品数量?我的意思是对每个子类别中的值求和 到目前为止,我只成功获得了最后一级子类别的计数: function menuList($data, $parent = 0 ){ static $i = 1; $tab = str_repeat(' ',$i); if($data[$parent]){ $html = $tab.'<ul id="menu'.$i.'">'; $i++;
function menuList($data, $parent = 0 ){
static $i = 1;
$tab = str_repeat(' ',$i);
if($data[$parent]){
$html = $tab.'<ul id="menu'.$i.'">';
$i++;
$count=0;
foreach($data[$parent] as $v){
$id = $v->id;
$categoryname=$v->bg_category;
if(in_array($id, $_SESSION['active_product_categories'])){
$q='select distinct product_id from products_to_categories where category_id="'.$id.'"';
$res=mysql_query($q) or die());
$num_rows=mysql_num_rows($res);
$count='( '.$num_rows.' )';
}
$child = menuList($data, $v->id);
$html .= $tab.'<li>';
$html .= '<a href="'.$v->WebSite.'/shop/index.php?offers='.$id.'">'.$categoryname.' '.$count.' </a>';
if($child){
$i–;
$html .= $child;
$html .= $tab;
}
$html .= '</li>';
}
$html .= $tab.'</ul>';
return $html;
} else {
return false;
}
}
$query = mysql_query('select * from products_categories where visible="1" group by bg_category order by bg_category ASC');
while($r=mysql_fetch_object($query)){
$data[$r->parent][] = $r;
}
$menu = menuList($data);
echo $menu;
函数菜单列表($data,$parent=0){
静态$i=1;
$tab=str_重复(“”,$i);
如果($data[$parent]){
$html=$tab.“
”;
返回$html;
}否则{
返回false;
}
}
$query=mysql\u query('select*from products\u categories where visible=“1”group by bg\u category order by bg\u category ASC');
while($r=mysql\u fetch\u object($query)){
$data[$r->parent][]=$r;
}
$menu=menuList($data);
echo$菜单;
请看一下屏幕截图
以下是截图:
如果我是你,我会尝试编写两个类,下面我添加了伪代码示例:
Class Menu
{
private $aSubMenus
public function __construct()
public function getNumberOfItems()
public function addMenuItem()
public function getHTML()
public function load($menuID)
}
Class MenuItem
{
public function __construct()
public function getHTML()
}
我不知道您的表的结构,但为什么不在SQL中修复它:
$q = 'SELECT parent_id, parent_name, count(child_id) FROM your_table GROUP BY parent_id';
然后才建立HTML视图。
此代码非常近似。菜单列表的功能在哪里完成?因为我看不到它的结束曲括号对不起,我没有名声添加sreenshot,但基本菜单类别是这样的:电子产品?计数->手机?计数->手机(10)智能手机(20)手机的总数应该是30,电子产品也应该是30,但我不能显示它..就在最后一次查询之前,而。。这是截图Erik你能在代码中实现它来告诉我怎么做吗?谢谢。。这是一个很大的要求,我会添加一些伪代码来帮助您的方式:我已经改变了我的答案,包括一些我会使用的伪代码。。如果将加载和数据收集与html生成分开,问题就会简单得多。Yarren,我不想计算子类别。我想在分类中计算产品,我只在最后一个深层子分类中计算。。请看sreen shot链接……是的,我看到了。在DB中,从DB中计算条目这样的事情要容易得多。通过这种方式,您可以计算您想要的任何内容,包括每个类别中的项目。Yarren,我可以并且我确实可以使用此查询对类别中的产品进行计数:$q='select distinct product_id from products_to_categories,其中category_id=“'.$id.”;但它直接将产品与类别联系起来。。如何将所有子类别的产品相加并将其添加到母类别。。这就是问题所在,我相信所有需要的信息都在上面公布了。。如果需要的话,我可以提供额外的表格。你能提供你的表格结构吗?Yarren,基本上涉及3个表格:1。产品类别2。产品3。您需要哪一种产品?