我创建了一个mysql表,其中包括这些行和值:
category | item_name
=======================
Dinner | Lobster
Dinner | Pizza
Lunch | Sandwich
Lunch | Soup
Lunch | Salad
-------------------------然后查询数据库,结果放在一个数组"$menu_selected“中。我循环通过"$menu_selected“来显示结果。
foreach($menu_selected as $m):
echo $category = $m->category . "<br>";
echo $item_name = $m->item_name . "<br><br>";
endforeach;输出:
Dinner
Lobster
Dinner
Pizza
Lunch
Sandwich
Lunch
Soup
Lunch
Salad我如何过滤PHP中的类别,这样它就不会只回显每个类别的第一个实例?类别行值并不总是为“晚餐”或“午餐会”,我希望能够回显这个类别,而不将其与常量进行比较,比如if($category =‘晚餐’){}。我花了一周的时间研究,却搞不清楚。任何人的帮助都将不胜感激。
我希望输出如下所示:
**Dinner**
Lobster
Pizza
Sandwich
**Lunch**
Sandwich
Soup
Salad发布于 2013-09-28 22:17:01
确保在查询中按类别订购。然后,只需在循环之外添加一个$category变量,如果该变量已更改,则输出标头。
$category = '';
foreach($menu_selected as $m) {
if ($m->category != $category) {
echo "**$m->category** <br>";
$category = $m->category;
}
echo $m->category . "<br>";
echo $m->item_name . "<br><br>";
}发布于 2013-09-28 22:19:25
只需使用2预测法。第一类为第二类,第二类为物品
foreach($menu_selected as $m1):
echo $category = $m1->category . "<br>";
foreach($menu_selected as $m):
echo $item_name = $m->item_name . "<br><br>";
if ($m->category != $m1->category)
{
break;
}
endforeach;
endforeach;发布于 2013-09-28 22:20:25
$cat_item_array = ARRAY();
foreach($menu_selected as $m) {
if (!isset($cat_item_array[$m->category])) {
$cat_item_array[$m->category] = $m->item_name;
echo "found new category: ".$m->category . " (Added item: ".$m->item_name.")<br>";
continue;
}
$cat_item_array[$m->category] = $m->item_name;
echo "Added item ".$m->item_name." to category ".$m->category.".<br><br>";
}
print '<pre>'; var_dump($cat_item_array); print '</pre>';https://stackoverflow.com/questions/19072193
复制相似问题