Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Codeigniter:类别和子类别_Php_Mysql_Arrays_Codeigniter_Codeigniter Datamapper - Fatal编程技术网

Php Codeigniter:类别和子类别

Php Codeigniter:类别和子类别,php,mysql,arrays,codeigniter,codeigniter-datamapper,Php,Mysql,Arrays,Codeigniter,Codeigniter Datamapper,我正在尝试为餐厅菜单创建类别和子类别 子类别具有其他字段,如“价格”、“说明”,类别仅具有id和名称。所以我决定选择那两张桌子 Categories -> ID, NAME Subcategoires -> ID, NAME, DESCRIPTION, PRICE, CATEGORIES_ID, 现在我正试图将它们组织起来,制作出一个好看的菜单 我还将DataMapper用于Codeigniter 到目前为止,我有: $categories = new Category_mo

我正在尝试为餐厅菜单创建类别和子类别

子类别具有其他字段,如“价格”、“说明”,类别仅具有id和名称。所以我决定选择那两张桌子

Categories    -> ID, NAME
Subcategoires -> ID, NAME, DESCRIPTION, PRICE, CATEGORIES_ID,
现在我正试图将它们组织起来,制作出一个好看的菜单

我还将DataMapper用于Codeigniter

到目前为止,我有:

$categories = new Category_model();
$subcategories = new Subcategory_model();
$categories->get();
$subcategories->get();

$recent_categories = array();
$recent_subcategories = array();

foreach ($categories as $category)
{
    $single_category = array
    (
        'category_id' => $category->id,
        'category_name' => $category->name,
    );

    foreach ($subcategories as $subcategory)
    {
        if ($subcategory->categories_id == $category->id)
        {
            $single_subcategory = array
            (
                'subcategory_id' => $subcategory->id,
                'subcategory_name' => $subcategory->name,
                'subcategory_description' => $subcategory->description,
                'subcategory_price' => $subcategory->price,
            );
        }
    }

    array_push($recent_categories, $single_category);
    array_push($recent_subcategories, $single_subcategory);
}
这几乎是一个小问题,它是打印两个类别的两个子类别。每个人只需要一个

现在看起来是这样的:

ALCOHOL
    - VODKA
    - COLA
NON-ALCOHOL
    - VODKA
    - COLA
很明显,我想要的是伏特加酒和可乐


有人能告诉我怎么做吗?谢谢。

也许您应该立即填充数组

假设您的内容是这样的

    $categories = array("alcohol", "non-alcohol");
    $subcategories = array(
                     (object)array("category" => "alcohol", "name" => "vodka"),
                     (object)array("category" => "non-alcohol", "name" => "cola")
                   );

    foreach ($categories as $category)
    {
        $recent_categories[] = $category;

        foreach ($subcategories as $subcategory => $subcat)
        {               
            $recent_subcategories[$subcat->name][] = $subcat->name;
        }
    }
这将导致:

array(2) {
  [0]=>
  string(7) "alcohol"
  [1]=>
  string(11) "non-alcohol"
}

array(2) {
  ["alcohol"]=>
  string(5) "vodka"
  ["non-alcohol"]=>
  string(4) "cola"
}
最糟糕的是

排列 “类别”=>阵列子类别

如果我看到同一类别的多个产品,但我希望信息在数据库中,而不是硬编码,则这将覆盖同一类别的最后产品名称
$categories = array("alcohol", "non-alcohol");
$subcategories = array(
                 (object)array("category" => "alcohol", "name" => "vodka"),
                 (object)array("category" => "non-alcohol", "name" => "cola")
               );
$recent_subcategories = array();
foreach ($categories as $category)
{
    $recent_categories[] = $category;

    foreach ($subcategories as $subcategory => $subcat)
    {               
        $recent_subcategories[$subcat->name][] = $subcat->name;
    }
}