我有一个看起来像这样的数组
Array
(
[provider] => Array
(
[id] => provider1
[distribuitor] => Array
(
[0] => Array
(
[name] => distribuitor1
[machines] => Array
(
[0] => Array
(
[id] => MX3
[installDate] => 2009-01-01
)
[1] => Array
(
[id] => MX4
[installDate] => 2008-01-01
)
[2] => Array
(
[id] => MX7
[installDate] => 2009-05-05
)
)
)
[1] => Array
(
[name] => distribuitor2
[machines] => Array
(
[0] => Array
(
[id] => FX3
[installDate] => 2009-11-15
)
[1] => Array
(
[id] => GX4
[installDate] => 2008-07-22
)
[2] => Array
(
[id] => RX7
[installDate] => 2009-06-25
)
)
)
)
)
)
从这个数组我想生成一系列这样的sql语句:
INSERT INTO table1 VALUES ('provider1','distrubuitor1','MX3','2009-01-01')
INSERT INTO table1 VALUES ('provider1','distrubuitor1','MX4','2008-01-01')
INSERT INTO table1 VALUES ('provider1','distrubuitor1','MX7','2009-05-05')
INSERT INTO table1 VALUES ('provider1','distrubuitor2','FX3','2009-11-15')
INSERT INTO table1 VALUES ('provider1','distrubuitor2','GX4','2008-07-22')
INSERT INTO table1 VALUES ('provider1','distrubuitor2','RX7','2009-06-25')
我对数组操作并不十分精通,所以我的问题是:我怎样才能实现这个目标?
奖励点:
如果您可以提供资源链接,我可以了解更多相关信息。
答案最好使用'无限'嵌套数组。
Pd积。
我不是母语为英语的人,我知道我的问题标题应该更多
通用,如果你有更好的标题,请改变它。
答案 0 :(得分:1)
如果数组键是静态的,那么希望它有所帮助。
foreach($array as $key => $value)
{
foreach($value['distrubuitor'] as $k => $val)
{
foreach($val['machines'] as $m => $v)
{
mysql_query("INSERT INTO table1 VALUES ('".$value['id']."','".$val['name']."','".$v['id']."','".$v['installdate']."')");
}
}
}
答案 1 :(得分:0)
您可以使用简单的foreach来实现此目的。
foreach ($array as $a => $b) {
foreach ...
foreach ...
}
链接:http://us.php.net/manual/en/control-structures.foreach.php
答案 2 :(得分:0)
您可以使用递归函数,以便它可以无限制地嵌套:
Function FlattenArray($previousvalues,$currentarrray) {
foreach($currentarray as $arraykey => $arrayitem) {
if(is_array($arrayitem)) {
$temp = $previousvalues.",'".$arraykey."'";
FlattenArray($temp,$arrayitem);
}
else {
$query = "INSERT INTO table1 VALUES(".$previousvalues.",'".$arrayitem."')";
mysql_query($query);
}
}
}
然后用适当的起始变量调用你的函数。确保table1有足够的列来处理最大可能的嵌套,否则mysql_query将失败。