将自动生成的多维数组插入数据库

时间:2017-06-19 10:40:24

标签: php mysql multidimensional-array

我需要为多维数组创建一个db函数。阵列当前不知道多深,bcoz它们将来自xml文件。 我有一个示例数组

Array
(
    [employee] => Array
        (
            [0] => Array
                (
                    [name] => Array
                        (
                            [lastname] => Kelly
                            [firstname] => Grace
                        )

                    [hiredate] => October 15, 2005
                    [projects] => Array
                        (
                            [project] => Array
                                (
                                    [0] => Array
                                        (
                                            [product] => Printer
                                            [id] => 111
                                            [price] => $111.00
                                        )

                                    [1] => Array
                                        (
                                            [product] => Laptop
                                            [id] => 222
                                            [price] => $989.00
                                        )

                                )

                        )

                )

            [1] => Array
                (
                    [name] => Array
                        (
                            [lastname] => Grant
                            [firstname] => Cary
                        )

                    [hiredate] => October 20, 2005
                    [projects] => Array
                        (
                            [project] => Array
                                (
                                    [0] => Array
                                        (
                                            [product] => Desktop
                                            [id] => 333
                                            [price] => $2995.00
                                        )

                                    [1] => Array
                                        (
                                            [product] => Scanner
                                            [id] => 444
                                            [price] => $200.00
                                        )

                                )

                        )

                )

            [2] => Array
                (
                    [name] => Array
                        (
                            [lastname] => Gable
                            [firstname] => Clark
                        )

                    [hiredate] => October 25, 2005
                    [projects] => Array
                        (
                            [project] => Array
                                (
                                    [0] => Array
                                        (
                                            [product] => Keyboard
                                            [id] => 555
                                            [price] => $129.00
                                        )

                                    [1] => Array
                                        (
                                            [product] => Mouse
                                            [id] => 666
                                            [price] => $25.00
                                        )
                               )
                        )
                  )
        )
)

我需要将这些类型的数组输入db,然后以一种良好的非程序员可读格式检索它们

我创建了2个表...第一个用于数组级别字段的数组键,另一个用于key = value

我试过这个

 function array_Dump($array, $d=1){
    if (is_array($array)){
        foreach($array as $key=>$val){
            for ($i=0;$i<$d;$i++){
                $level=$i;
            }
            if (is_array($val)){
               if (is_int($key)){

                array_Dump($val, $d+1);
                }else{
                $query = "insert into xml_array (level, input) VALUES ('$level','$key')";
              insert_sql($query);
                array_Dump($val, $d+1);
               }
            } else {
                $query = "insert into xml_data (array_id,level_id, array_key,array_value) VALUES ('$insert_id','$level','$key','$val')";
                insert_sql($query);
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

创建一个这样的表:

属性(id,parent_id,属性)

其中id将是primary keyparent_id将是父记录的id,而properties将是一个带有原子的小json字段属性。通过这种方式,您可以支持XML向您的方向投射的任何深度。

关于非程序员代表。例如,您可以使用table(您可以使用div来解决这个问题),它将为顶级数组中的每个元素包含一行。这样的行将包含每个属性的单独列。当属性是一个数组时,给定的单元格将是一个自己的表格,其处理方式与第一个table类似。建议使内部table可折叠,因此如果只想查看主要级别,用户将不必滚动很长时间。