首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >组数组并按相同的键值分配唯一编号。

组数组并按相同的键值分配唯一编号。
EN

Stack Overflow用户
提问于 2019-05-03 04:13:41
回答 3查看 58关注 0票数 0

我有一个数组,其中我需要为属于不同零售商的产品分配唯一的批处理id。

代码语言:javascript
复制
foreach($data as $type){
$grouped_types[$type['retailer']][] = $type;
}

$data是我的数组

代码语言:javascript
复制
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。

代码语言:javascript
复制
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
  )
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-05-03 06:43:39

步骤1

以零售商数组的键值对为例,如下所示

代码语言:javascript
复制
//Where key as retailer id and value as batch id
$retailers = array(
     "HYD-48AC" => "B001",
     "PUN-48AC" => "B001",
); 

现在在您的foreach循环中应用下面的逻辑

代码语言:javascript
复制
foreach($data as $type){
    $batch_id = $retailers[$type['retailer'];
    $type['batchid'] = $batch_id;
    $grouped_types[$type['retailer']][] = $type;
}

这将百分之百地为你工作。

票数 0
EN

Stack Overflow用户

发布于 2019-05-03 04:22:30

您可以简单地使用retailer作为键并将元素附加到其中。

因此,在HYD-48AC下将有3个元素

PUN-48AC下的一个元素

代码语言:javascript
复制
<?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>';
?>

输出:

代码语言:javascript
复制
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
                )

        )

)

希望它能成功。

票数 0
EN

Stack Overflow用户

发布于 2019-05-03 06:03:17

您可以创建一个独立的零售商批处理id数组,其中零售商组是keyvalue是批处理id,并使用array_walk迭代并将相关的零售商批处理id分配给产品。

代码语言:javascript
复制
$retailers = ['HYD-48AC' => 'B001', 'PUN-48AC' => 'B002'];
array_walk($products, function(&$v, $k) use ($retailers){
  !empty($retailers[$v['retailer']]) ? ($v['batchid'] = $retailers[$v['retailer']]) : '';
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55963196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档