PHP foreach子类别故障
我在创建脚本时遇到了问题,在脚本中,某个子类别的产品需要在某个分区内打印。目前我正在提取所有需要的数据,但如果我有4个类别,此时会发生什么情况,它创建了4次DIV,但是DIV中的产品都是相同的,但是我需要它们特定于相关类别,希望这是有意义的。这就是我到目前为止所做的:PHP foreach子类别故障,php,loops,foreach,Php,Loops,Foreach,我在创建脚本时遇到了问题,在脚本中,某个子类别的产品需要在某个分区内打印。目前我正在提取所有需要的数据,但如果我有4个类别,此时会发生什么情况,它创建了4次DIV,但是DIV中的产品都是相同的,但是我需要它们特定于相关类别,希望这是有意义的。这就是我到目前为止所做的: $categories = getCategories(); foreach($categories as $category) { echo '<div class="pa
$categories = getCategories();
foreach($categories as $category)
{
echo '<div class="panel">
<div class="panel-wrapper"><pre>';
echo print_r(getProducts($category['id_category']));
echo '</pre>
<h2 class="title">ff</h2>';
echo '</div>
</div>';
}
返回:
$cat = 0;
$categories = getCategories();
foreach ($categories as $category) {
// If you want to print something about the category, do it here.
$subcategories = getSubcategories($category_id);
$subcat = 0;
foreach ($subcategories as $subcategory) {
$products = getProducts($category_id_for_subcategory) // see note 1
foreach ($products as $product) {
// This product is under a subcategory. Do what you want here.
$array[$cat][$subcat++][] = $product; // or echo the product...
}
}
$products = getProducts($category_id);
foreach ($products as $product) {
// This product is under a general category, and not a subcategory.
// Do what you want to do with this product here.
$array[$cat++][] = $product; // or echo the product.
}
}
我对php非常陌生,所以我不知道如何在没有foreach的情况下运行这个循环,我认为这是我出错的地方
提前谢谢 首先,我想提到的是,类别和子类别应该在同一个DB表中,子类别应该用一个字段(例如subcategory_of)标记,并且应该与类别的ID相关联。所以我们没有ID的混合,因为产品可以在两个类别或子类别下 初始化一个常规数组,该数组将转到
$array['category']['subcategory']['product_id']
,或者在某些情况下,产品可能直接位于没有子类别分类的类别中您不必这样做,只需打印输出,而无需将其保存在数组中。
从类别开始,针对每个类别,运行它们:
getSubcategories
方法的参数中提供的$category\u id
相关联的子类别。这些“get方法”应该返回数组,这样我们就可以循环使用它们
注意2:我知道这是一种潜在的危险的代码编写方式,因为我们每次在foreach循环中迭代时都会查询数据库。就像Marc说的,如果你有很多种类和产品,这可能是非常低效的。我这样写的原因是因为它很冗长,让新程序员更容易理解我们正在做的事情背后的想法(至少,它让我更容易理解它)
我希望这能让您明白。您的getProducts()是做什么的?现在看起来你正在为categories循环的每个迭代运行一个查询,如果你有很多类别,这可能会非常低效。这只是一个朋友的快速修复,不会有超过5个类别,也不会有很多产品,所以我现在不太担心效率低下。
Array
(
[0] => Array
(
[title] => Hat
[description] =>nice description
[visible] => 1
[date-added] => 2011-02-10 20:02:02
[date-updated] => 0000-00-00 00:00:00
[price] => 10
[id_category] => 2
)
[1] => Array etc etc etc
)
$cat = 0;
$categories = getCategories();
foreach ($categories as $category) {
// If you want to print something about the category, do it here.
$subcategories = getSubcategories($category_id);
$subcat = 0;
foreach ($subcategories as $subcategory) {
$products = getProducts($category_id_for_subcategory) // see note 1
foreach ($products as $product) {
// This product is under a subcategory. Do what you want here.
$array[$cat][$subcat++][] = $product; // or echo the product...
}
}
$products = getProducts($category_id);
foreach ($products as $product) {
// This product is under a general category, and not a subcategory.
// Do what you want to do with this product here.
$array[$cat++][] = $product; // or echo the product.
}
}