你好,我想从一个数组创建数组。我正在读取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>";
}
答案 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>";