Как создать многомерный массив из другого массива? - PullRequest
0 голосов
/ 24 сентября 2018

Здравствуйте, я хочу создать массив из одного массива.Я читаю значения из CSV-файлов и создаю первый массив.После создания этого массива я сгруппировал массив на основе 'parent_id'.

вывод массива newcsv выглядит следующим образом:

array(148) {
  [0]=>
  array(4) {
    ["parent_id"]=>
    int(1554)
    ["id"]=>
    int(1556)
    ["sku"]=>
    string(11) "12000-Ash-S"
    ["qty"]=>
    string(3) "199"
  }
  [1]=>
  array(4) {
    ["parent_id"]=>
    int(1554)
    ["id"]=>
    int(1555)
    ["sku"]=>
    string(11) "12000-Ash-M"
    ["qty"]=>
    string(3) "691"
  }
  [2]=>
  array(4) {
    ["parent_id"]=>
    int(1554)
    ["id"]=>
    int(1557)
    ["sku"]=>
    string(11) "12000-Ash-L"
    ["qty"]=>
    string(3) "740"
  }
  [3]=>
  array(4) {
    ["parent_id"]=>
    int(1554)
    ["id"]=>
    int(1558)
    ["sku"]=>
    string(12) "12000-Ash-XL"
    ["qty"]=>
    string(3) "735"
  }

}

Следующий код, используемый для группировки массивов

$result = array();
foreach ($newcsv as $element) {
    $result[$element['parent_id']][] = $element;

}

Группировка массива на основе 'parent_id' ВЫХОД:

array(3) {
  [1554]=>
  array(48) {
    [0]=>
    array(4) {
      ["parent_id"]=>
      int(1554)
      ["id"]=>
      int(1556)
      ["sku"]=>
      string(11) "12000-Ash-S"
      ["qty"]=>
      string(3) "199"
    }
    [1]=>
    array(4) {
      ["parent_id"]=>
      int(1554)
      ["id"]=>
      int(1555)
      ["sku"]=>
      string(11) "12000-Ash-M"
      ["qty"]=>
      string(3) "691"
    }
    [2]=>
    array(4) {
      ["parent_id"]=>
      int(1554)
      ["id"]=>
      int(1557)
      ["sku"]=>
      string(11) "12000-Ash-L"
      ["qty"]=>
      string(3) "740"
    }
  }
  [1603]=>
  array(20) {
    [0]=>
    array(4) {
      ["parent_id"]=>
      int(1603)
      ["id"]=>
      int(1605)
      ["sku"]=>
      string(13) "12300-Black-S"
      ["qty"]=>
      string(4) "3000"
    }
    [1]=>
    array(4) {
      ["parent_id"]=>
      int(1603)
      ["id"]=>
      int(1604)
      ["sku"]=>
      string(13) "12300-Black-M"
      ["qty"]=>
      string(4) "3000"
    }
    [2]=>
    array(4) {
      ["parent_id"]=>
      int(1603)
      ["id"]=>
      int(1606)
      ["sku"]=>
      string(13) "12300-Black-L"
      ["qty"]=>
      string(4) "3000"
    }
  }
  [1624]=>
  array(80) {
    [0]=>
    array(4) {
      ["parent_id"]=>
      int(1624)
      ["id"]=>
      int(1626)
      ["sku"]=>
      string(13) "12500-White-S"
      ["qty"]=>
      string(4) "1858"
    }
    [1]=>
    array(4) {
      ["parent_id"]=>
      int(1624)
      ["id"]=>
      int(1625)
      ["sku"]=>
      string(13) "12500-White-M"
      ["qty"]=>
      string(4) "2295"
    }
    [2]=>
    array(4) {
      ["parent_id"]=>
      int(1624)
      ["id"]=>
      int(1627)
      ["sku"]=>
      string(13) "12500-White-L"
      ["qty"]=>
      string(4) "1974"
    }

  }
}

Теперь я хочу создать новую форму массива над массивом.Я хочу массив, как показано ниже.

$data = [ 'update' => [
        [
            'id' => 733,
            'sku' => '344'
        ],
        [
            'id' => 733,
            'sku' => '200'
        ]
    ]
];

Я использую следующий код создать массив.Но это не работает для меня.

<code>$data = array();
foreach($result as $key => $value){
$data = ('update' =>array('id'=>$value['id'],'regular_price'=>$value['sku']));
echo"<pre>";
print_r($data);
echo"
";}

1 Ответ

0 голосов
/ 24 сентября 2018

Поскольку ваши данные размещены под parent_id, я добавил еще один уровень зацикливания, поэтому первый слой предназначен для parent_id, а второй - для каждого элемента в нем.Кажется, вы хотите, чтобы все находилось в разделе «обновление», я добавляю его к точке, в которой данные добавляются в массив, и использую [], чтобы сказать, добавьте новый элемент к этому.

<code>$data = array();
foreach($result as $key => $parent){
    foreach ( $parent as $item ) {
        $data[$key]['update'][] = array( 'id'=>$item['id'],'sku'=>$item['sku']);
    }
}
echo"<pre>";
print_r($data);
echo"
";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...