我有一个数组,其中我需要为属于不同零售商的产品分配唯一的批处理id。
foreach($data as $type){
$grouped_types[$type['retailer']][] = $type;
}$data是我的数组
Array
(
[1] => Array
(
[productid] => 1001
[mrp] => 444
[whpoid] => 105
[retailer] => HYD-48AC
[manufacturerbarcode] =>
[comments] =>
[lastmodifiedby] =>
[lastmodifieddate] => 2019-02-12 11:49:19
)
[2] => Array
(
[productid] => 1002
[mrp] => 444
[whpoid] => 106
[retailer] => HYD-48AC
[manufacturerbarcode] =>
[comments] =>
[lastmodifiedby] =>
[lastmodifieddate] => 2019-02-12 11:49:19
)
[3] => Array
(
[productid] => 1003
[mrp] => 444
[whpoid] => 105
[retailer] => HYD-48AC
[manufacturerbarcode] =>
[comments] =>
[lastmodifiedby] =>
[lastmodifieddate] => 2019-02-12 11:49:19
)
[4] => Array
(
[productid] => 1005
[mrp] => 444
[whpoid] => 105
[retailer] => PUN-48AC
[manufacturerbarcode] =>
[comments] =>
[lastmodifiedby] =>
[lastmodifieddate] => 2019-02-12 11:49:19
)期望输出所以数组2和3属于同一个零售商,因此它们具有相同的批处理id。我需要为每个不同的零售商分配唯一的批处理id,但是同一零售商下的产品应该预先具有相同的批id.Kindly help.Thanks。
Array
(
[1] => Array
(
[productid] => 1001
[mrp] => 444
[whpoid] => 105
[retailer] => HYD-48AC
[manufacturerbarcode] =>
[comments] =>
[lastmodifiedby] =>
[lastmodifieddate] => 2019-02-12 11:49:19
[batchid] => B001
)
[2] => Array
(
[productid] => 1002
[mrp] => 444
[whpoid] => 106
[retailer] => HYD-48AC
[manufacturerbarcode] =>
[comments] =>
[lastmodifiedby] =>
[lastmodifieddate] => 2019-02-12 11:49:19
[batchid] => B002
)
[3] => Array
(
[productid] => 1003
[mrp] => 444
[whpoid] => 105
[retailer] => HYD-48AC
[manufacturerbarcode] =>
[comments] =>
[lastmodifiedby] =>
[lastmodifieddate] => 2019-02-12 11:49:19
[batchid] => B002
)
[4] => Array
(
[productid] => 1005
[mrp] => 444
[whpoid] => 105
[retailer] => PUN-48AC
[manufacturerbarcode] =>
[comments] =>
[lastmodifiedby] =>
[lastmodifieddate] => 2019-02-12 11:49:19
[batchid] => B003
)发布于 2019-05-03 06:43:39
步骤1
以零售商数组的键值对为例,如下所示
//Where key as retailer id and value as batch id
$retailers = array(
"HYD-48AC" => "B001",
"PUN-48AC" => "B001",
); 现在在您的foreach循环中应用下面的逻辑
foreach($data as $type){
$batch_id = $retailers[$type['retailer'];
$type['batchid'] = $batch_id;
$grouped_types[$type['retailer']][] = $type;
}这将百分之百地为你工作。
发布于 2019-05-03 04:22:30
您可以简单地使用retailer作为键并将元素附加到其中。
因此,在HYD-48AC下将有3个元素
和PUN-48AC下的一个元素
<?php
$arr = Array(
1 => Array
(
'productid' => 1001
, 'mrp' => 444
, 'whpoid' => 105
, 'retailer' => 'HYD-48AC'
, 'manufacturerbarcode' => ''
, 'comments' => ''
, 'lastmodifiedby' => ''
, 'lastmodifieddate' => '2019-02-12 11:49:19'
),
2 => Array
(
'productid' => 1002
, 'mrp' => 444
, 'whpoid' => 106
, 'retailer' => 'HYD-48AC'
, 'manufacturerbarcode' => ''
, 'comments' => ''
, 'lastmodifiedby' => ''
, 'lastmodifieddate' => '2019-02-12 11:49:19'
),
3 => Array
(
'productid' => 1003
, 'mrp' => 444
, 'whpoid' => 105
, 'retailer' => 'HYD-48AC'
, 'manufacturerbarcode' => ''
, 'comments' => ''
, 'lastmodifiedby' => ''
, 'lastmodifieddate' => '2019-02-12 11:49:19'
),
4 => Array
(
'productid' => 1005
, 'mrp' => 444
, 'whpoid' => 105
, 'retailer' => 'PUN-48AC'
, 'manufacturerbarcode' => ''
, 'comments' => ''
, 'lastmodifiedby' => ''
, 'lastmodifieddate' => '2019-02-12 11:49:19'
)
);
$groupedArr = [];
if (! empty($arr)) {
foreach ($arr as $elem) {
$groupedArr[$elem['retailer']][] = $elem;
}
}
echo '<pre>';
print_r($groupedArr);
echo '</pre>';
?>输出:
Array
(
[HYD-48AC] => Array
(
[0] => Array
(
[productid] => 1001
[mrp] => 444
[whpoid] => 105
[retailer] => HYD-48AC
[manufacturerbarcode] =>
[comments] =>
[lastmodifiedby] =>
[lastmodifieddate] => 2019-02-12 11:49:19
)
[1] => Array
(
[productid] => 1002
[mrp] => 444
[whpoid] => 106
[retailer] => HYD-48AC
[manufacturerbarcode] =>
[comments] =>
[lastmodifiedby] =>
[lastmodifieddate] => 2019-02-12 11:49:19
)
[2] => Array
(
[productid] => 1003
[mrp] => 444
[whpoid] => 105
[retailer] => HYD-48AC
[manufacturerbarcode] =>
[comments] =>
[lastmodifiedby] =>
[lastmodifieddate] => 2019-02-12 11:49:19
)
)
[PUN-48AC] => Array
(
[0] => Array
(
[productid] => 1005
[mrp] => 444
[whpoid] => 105
[retailer] => PUN-48AC
[manufacturerbarcode] =>
[comments] =>
[lastmodifiedby] =>
[lastmodifieddate] => 2019-02-12 11:49:19
)
)
)希望它能成功。
发布于 2019-05-03 06:03:17
您可以创建一个独立的零售商批处理id数组,其中零售商组是key,value是批处理id,并使用array_walk迭代并将相关的零售商批处理id分配给产品。
$retailers = ['HYD-48AC' => 'B001', 'PUN-48AC' => 'B002'];
array_walk($products, function(&$v, $k) use ($retailers){
!empty($retailers[$v['retailer']]) ? ($v['batchid'] = $retailers[$v['retailer']]) : '';
});https://stackoverflow.com/questions/55963196
复制相似问题