如何从另一个数组创建多维数组?

时间:2018-09-24 10:16:07

标签: php arrays multidimensional-array

你好,我想从一个数组创建数组。我正在读取CSV文件中的值并创建一个Array First。创建完那个数组之后,我将基于“ 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'
        ]
    ]
];

我正在使用以下代码创建数组。但这对我不起作用。

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

1 个答案:

答案 0 :(得分:1)

由于您的数据位于parent_id下,因此我又增加了一个循环级别,因此第一层用于parent_id,第二层用于其中的每个项目。您似乎希望所有内容都在“更新”下,因此我将其添加到将数据添加到数组的位置,并使用[]表示将新项添加到此位置。

$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"</pre>";