如何创建多维关联数组

时间:2016-02-20 23:08:36

标签: php arrays multidimensional-array

我有这个示例表数据,它实际上有id,价格,更多的东西,但我想我可以问这个数据,我用PHP作为我的语言:

id   category  product       complement_type   option
 1   Pizza     Large Pizza   Bread             Brown bread
 2   Pizza     Small Pizza   Bread             White bread
 3   Pizza     Small Pizza   Ingredients       Olives
 4   Salads    Green Salad   Extras            Bacon
 5   Salads    Cesars Salad  Extras            Lettuce

我已经有了这个表的查询,

现在我想将ir转换为此类型的数组

array(
 [Pizza] => array(
             [Large Pizza] => array(
                                [Bread] => Brown Bread
                              )
            ),
            array(
             [Small Pizza] => array(
                                [Bread]        => White Bread
                                [Ingredients]  => Olives
                              ),
            )
 ),
 [Salads] => array(
             [Green Salad] => array(
                               [Extras]         => Bacon
                              )
             [Cesar Salad] => array(
                               [Extras]         => Lettuce
                              )
 )

那个数组是我想要实现的,但我不能正确

我知道我必须使用for循环来循环它,也许添加一个while循环来获取类别中的更改,但我似乎没有找到方法去做,有关如何实现这一点的任何想法? / p>

我很欣赏任何想法

再次,我使用PHP

感谢

编辑:下面是数据即时通讯的链接,它有点不同,但它的原理相同

https://dobleslash.com/TakeEatEasy/API/getRest?id=1

1 个答案:

答案 0 :(得分:1)

首先:您的原始数组 - 如发布的是注释 - 如果是一个对象数组:这个初步说明是要理解语法->,否则只是简单地阅读您的主要问题。

假设您的表格结果存储在数组$array中,您可以尝试这种方式:

$result = array();
foreach( $array as $row )
{
    if( !isset( $result[ $row->category ] ) ) 
    {
        $result[ $row->category ] = array();
    }
    if( !isset( $result[ $row->category ][ $row->product ] ) )
    {
        $result[ $row->category ][ $row->product ] = array();
    }
    $result[ $row->category ][ $row->product ][ $row->complement_type ] = $row->option;
}

一开始,我初始化一个空数组。然后 - 通过foreach循环,我处理$array的每个元素 - 如果主键(产品)不存在于结果数组中,我将其创建为空数组;然后我对类别子键(大比萨饼等)执行相同的操作。最后,我添加补充类型。

eval.in demo