如何将3-D多维数组转换为如下所示的1-D数组,我想将最后一个数组的值插入该特定数组的键中?

时间:2018-10-25 17:55:21

标签: php arrays multidimensional-array

我的数组如下。

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这样的值。

谢谢。

2 个答案:

答案 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);