我的数组如下。
Array
(
[data] => Array
(
[28] => Array
(
[0] => 201
[1] => 202
)
[29] => Array
(
[0] => 301
[1] => 302
)
[30] => Array
(
[0] => 401
[1] => 402
)
)
)
我想按如下方式转换此数组。
myarray = Array
(
[0] => Array
(
[data1] => 28
[data2] => Array
(
[0] => 201
[1] => 202
)
)
[1] => Array
(
[data1] => 29
[data2] => Array
(
[0] => 301
[1] => 302
)
)
[2] => Array
(
[data1] => 30
[data2] => Array
(
[0] => 401
[1] => 402
)
)
)
如上所述转换数组之后,我将把data1和data2值插入数据库。我会像
那样循环for($i=0;$i<count($myarray);$i++)
{
$year = $myarray[$i]['data1'];
for($j=0;$j<count($myarray[$i][data2]);$j++)
{
insert($year,$myarray[$i][data2][$j]);
}
}
我该怎么做?请帮我。 这是在for循环中使用的正确方法吗,其中将数据插入嵌套的for循环中。如果我们的数据数组太大,例如($ i)的数组计数为10000,而($ j)的数组计数为1000,那么插入函数会产生问题吗?
任何其他适当的数组转换对我也有好处。我只想在数据库中插入像201,202和28以及301,302和29这样的值。
谢谢。
答案 0 :(得分:2)
您真的需要中间数组才能插入数据吗?
遵循使用foreach()
直接从原始数组插入数据的想法会更容易...
$myarray = [ "data" => [ 28 =>[201,202], 29 => [301,302]]];
foreach ( $myarray["data"] as $year => $data ) {
foreach ( $data as $value2 ){
insert($year,$value2);
}
}
答案 1 :(得分:1)
这可以解决问题:
<?php
$arr = [
'data' => [
28 => [201,202],
29 => [301,302],
30 => [401,402],
]
];
$return = [];
foreach ($arr['data'] as $key => $value) {
$return[] = ['data1' => $key, 'data2' => $value];
}
var_dump($return);