像上面一样,您可能想要使用关系数据库。下面是一个粗略的想法。“pk”=主键,“fk”=外键。显然我省略了其他一些重要的字段
tblRestaurant
pkRestaurant
tblRestaurantTypesItems
fkRestaurant
fldMenuType
fldItem
要检索您的项目,您可以运行这样的查询
SELECT * FROM tblRestaurant R INNER JOIN tblRestaurantTypesItems RTI ON
R.pkRestaurant=RTI.fkRestaurant ORDER BY R.pkRestaurant
我没有测试过这个查询,但这是一个粗略的想法
这将返回如下记录集:
|Arbys |Breakfast|EGGS
|Arbys |Lunch |Burger
|McDonalds|Breakfast|McMuffin
|McDonalds|Breakfast|Hashbrown
|McDonalds|Breakfast|Coffee
|McDonalds|Lunch |Big Mac
|McDonalds|Dinner |Fries
或者如果你想更具体
SELECT * FROM tblRestaurant R INNER JOIN tblRestaurantTypesItems RTI ON
R.pkRestaurant=RTI.fkRestaurant WHERE R.pkRestaurant="McDonalds"
AND RTI.fldMenuType="Breakfast"
这会返回一些类似的东西
|McDonalds|Breakfast|McMuffin
|McDonalds|Breakfast|Hashbrown
|McDonalds|Breakfast|Coffee
编辑:我意识到我通过使用早餐午餐晚餐而不是早餐、汉堡、甜点而偏离了“菜单类型”的 OP 含义。会是一样的想法。
所以在 PHP 中,如果你有一个 $menuTypes() 数组,并且每种类型都有一个 $items() 数组,就像你在原始问题中所说的那样,$menuTypes['breakfast'] = $breakfastItems(),你可以做这样的事情.. 不是最好的方法,但meh
$restaurant = "McDonalds"
foreach ($menuTypes as $items){
$menuTypeName = key($items); //not sure if key() works on elements of arrays
// which are arrays themselves
foreach($items as $item){
//Assuming "McDonalds" Is already in tblRestaurant so we don't need to
//insert it now
$query="INSERT INTO tblRestaurantTypesItems VALUES('".$restaurant."',
'".$menuTypeName."', '".$item."')"
//execute query
}
}