我需要为多维数组创建一个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);
}
}
}
}
答案 0 :(得分:0)
创建一个这样的表:
属性(id,parent_id,属性)
其中id
将是primary key
,parent_id
将是父记录的id
,而properties
将是一个带有原子的小json字段属性。通过这种方式,您可以支持XML向您的方向投射的任何深度。
关于非程序员代表。例如,您可以使用table
(您可以使用div
来解决这个问题),它将为顶级数组中的每个元素包含一行。这样的行将包含每个属性的单独列。当属性是一个数组时,给定的单元格将是一个自己的表格,其处理方式与第一个table
类似。建议使内部table
可折叠,因此如果只想查看主要级别,用户将不必滚动很长时间。