Как я могу преобразовать трехмерный многомерный массив в одномерный массив, как показано ниже, где я хочу вставить значения последнего массива в ключи этого конкретного массива? - PullRequest
0 голосов
/ 25 октября 2018

Мой массив выглядит следующим образом.

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
                    )
            )
    )

После преобразования массива, как указано выше, я собираюсь вставить данные1 изначения 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.Если наш массив данных слишком большой, например 10000 для массива ($ i) и 1000 для ($ j), это создаст проблему для функции вставки?

Любое другое правильное преобразование массива также хорошо длямне.Я просто хочу вставить в базу данных такие значения, как 201,202 с 28 и 301,302 с 29.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Вам действительно нужен промежуточный массив, чтобы просто вставить данные?

Было бы проще следовать идее использования foreach() для прямой вставки данных из исходного массива..

$myarray = [ "data" => [ 28 =>[201,202], 29 => [301,302]]];

foreach ( $myarray["data"] as $year => $data )  {
    foreach ( $data as $value2 ){
        insert($year,$value2);
    }
}
0 голосов
/ 25 октября 2018

Это поможет:

<?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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...