Php 将自动生成的多维数组插入数据库
我需要为多维数组创建一个db函数。目前不知道数组的深度,因为它们将来自xml文件。 我有一个样本数组Php 将自动生成的多维数组插入数据库,php,mysql,multidimensional-array,Php,Mysql,Multidimensional Array,我需要为多维数组创建一个db函数。目前不知道数组的深度,因为它们将来自xml文件。 我有一个样本数组 Array ( [employee] => Array ( [0] => Array ( [name] => Array ( [lastname] =>
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个表。。。第一个用于具有数组级别字段的数组键,另一个用于键=值
我试过这个
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);
}
}
}
}
函数数组\u转储($array,$d=1){
if(is_数组($array)){
foreach($key=>$val的数组){
对于($i=0;$i创建如下表:
属性(id、父id、属性)
其中,id
将是主键
,parent\u id
将是父记录的id
,properties
将是一个带有原子属性的小json字段。这样,您就可以支持XML向您的方向延伸的任何深度
例如,你可以使用表
(你也可以用div
s解决这个问题)它将为顶级数组中的每个元素包含一行。这样的行将为每个属性包含单独的列。当属性是数组时,给定的单元格将是其自己的表,处理方式与第一个表类似。建议将内部表
设为可折叠的,因此如果有一个nts要仅查看主要级别,用户不必长时间滚动。在db中创建数据类型为JSON
的列,然后将JSON\u encode($array)
的结果插入db中,当您想以非程序员可读的格式读取时,将其转换回数组JSON\u decode($row['JSON\u column'])
并像使用原始arrayOk一样打印,但无法以良好的可读格式显示……我正在尝试使用table/div……但没有succeed@PawanKumar你试着做了什么?它怎么不起作用?