PHP从数组列表生成树数组

时间:2015-06-05 10:59:47

标签: php arrays

我想管理我的阵列,但我不知道该怎么做。

我的基本数组

$table = array(
        'color' => array('white', 'red'),
        'size' => array('37', '38'),
        'other' => array('a', 'b'),
    );

我想要回归:

$table = array(
            'color' => array(
                'white' => array(
                    'size' => array(
                        '37' => array(
                            'other' => array('a', 'b')
                        ),
                        '38' => array(
                            'other' => array('a', 'b')
                        ),
                    )
                ),
                'red' => array(
                    'size' => array(
                        '37' => array(
                            'other' => array('a', 'b')
                        ),
                        '38' => array(
                            'other' => array('a', 'b')
                        ),
                    )
                )
            )
        );

它只是一个简单的表,我想创建一个代码来渲染第二或第四个表。 我希望有人可以帮助我。 我知道表中有多少键很多深度。

3 个答案:

答案 0 :(得分:0)

您可以使用嵌套的foreach循环来完成您要查找的内容。

答案 1 :(得分:0)

以下是您的问题的解决方案:

$table = array(
        'color' => array('white', 'red'),
        'size' => array('37', '38'),
        'other' => array('a', 'b'),
    );

function myfunc($table){    
    foreach($table as $k=>$v){
        if($k == 'color'){
            foreach($v as  $color){
                $result['color'][$color]= array() ;
            }
        }elseif($k == 'size'){
            foreach($v as $size){
                foreach($result['color'] as $colorKey => $colorName){
                    $result['color'][$colorKey]['size'][$size] = $table['other']; 
                }
            }
        }           
    }
    return $result;
}
    $result = myfunc($table);

    echo "<pre>";
    print_r($result);

Out put:

enter image description here

答案 2 :(得分:0)

谢谢你的帮助,但对我来说并没有解决。

我想在商店中为产品创建属性。用户可以定义自己的属性并将其生成为产品。

问题是管理员可以为产品(使用自己的名字)生成一个,两个或更多属性,并且他可以设置是否设置了attr combine。

例如,如果我们要卖鞋子,我们可以(对于产品): 尺寸:38,37,36和颜色:红色,白色

现在admin生成所有组合: 38 - 红色 37 - 红色 36 - 红色 38 - 白色 37 - 白色 36 - 白色

现在他可以禁用/启用或设置合并计数(例如36红= 2对或禁用(不卖))。

我认为首先我必须反转表并将所有下一个表保存到temt。从后面的下一个构建表。