PHP:将具有共享密钥的数据从单个数组组合到新数组

死舞者

我有这个数组:

array(5) {
  [0]=>
  array(4) {
    ["productCode"]=>
    string(4) "X001"
    ["productUPC"]=>
    string(3) "261"
    ["productTextSeq"]=>
    string(1) "1"
    ["productTxtVal"]=>
    string(5) "Text1"
   }
  [1]=>
  array(4) {
    ["productCode"]=>
    string(4) "X001"
    ["productUPC"]=>
    string(3) "261"
    ["productTextSeq"]=>
    string(1) "2"
    ["productTxtVal"]=>
    string(5) "Text2"
   }
  [2]=>
  array(4) {
    ["productCode"]=>
    string(4) "X001"
    ["productUPC"]=>
    string(3) "261"
    ["productTextSeq"]=>
    string(1) "3"
    ["productTxtVal"]=>
    string(5) "Text3"
   }
  [3]=>
  array(4) {
    ["productCode"]=>
    string(4) "X002"
    ["productUPC"]=>
    string(3) "262"
    ["productTextSeq"]=>
    string(1) "1"
    ["productTxtVal"]=>
    string(5) "Text1"
   }
  [4]=>
  array(4) {
    ["productCode"]=>
    string(4) "X002"
    ["productUPC"]=>
    string(3) "262"
    ["productTextSeq"]=>
    string(1) "2"
    ["productTxtVal"]=>
    string(5) "Text2"
   }
}

使用上面的输入,我希望输出数组看起来像这样:

array(2) {
  [0]=>
  array(3) {
    ["productCode"]=>
    string(4) "X001"
    ["productUPC"]=>
    string(3) "261"
    ["productTxtVal"]=>
    string(17) "Text1 Text2 Text3"
   }
  [1]=>
  array(3) {
    ["productCode"]=>
    string(4) "X002"
    ["productUPC"]=>
    string(3) "262"
    ["productTxtVal"]=>
    string(11) "Text1 Text2"
   }
}

当productCode相同时,结果数组不需要productTextSeq键,只需要productTextVal的组合值。我已经在SO中搜索了此示例,但似乎我发现的每个示例都基于多个输入数组。我知道我可以使用嵌套的foreach函数强行执行此操作,但希望有一个更优雅的解决方案。

死舞者

我最终只是采用了蛮力方法,如果有人感兴趣,这是我的解决方案:

$productData = array();
$sortedData = array();
$comments = '';
$saveKey = '';
$appendComment = false;
$idx = 0;

foreach ($data as $key=>$value) {

    foreach ($value as $k=>$v) {
        if ($k == 'productCode') {
            if ($v == $saveKey) {
                $appendComment = true;
            } else {
                $appendComment = false;
                $saveKey = $v;
                if ($idx !== 0) { // Don't write to array on first iteration!
                    $productData['productTxtVal'] = $comments;
                    $sortedData[] = $productData;
                }
            }
        }

        if ($k == 'productTxtVal') {
            if ($appendComment == true) {
                $comments .= ' ' . trim($v);
            } else {
                $comments = trim($v);
            }
        }
    }

    $productData = $value;
    $idx++;
}

不是“优雅”,但可以。在此逻辑之后,我还要进行检查,以防原始数组中只有一个productCode,因为密钥永远不会更改,因此不会将其写入$ sortedData数组。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将2个数组组合到Xcode 6中的swift?swift?中,并带有相应的索引值)

来自分类Dev

将培根流中的所有值组合到单个数组中

来自分类Dev

将两个数组合并为具有公共值的单个数组

来自分类Dev

将两个数组合并为具有公共值的单个数组

来自分类Dev

如何拟合具有共享和非共享参数组合的多个数据集

来自分类Dev

如何将多个数组组合成单个JSON对象

来自分类Dev

PHP:将多个json的数据组合到数组

来自分类Dev

将数组中的一个值组合到另一个数组的所有值 php

来自分类Dev

php数组组合3个数组

来自分类Dev

将数组与数组组合

来自分类Dev

如何使用JavaScript将对象数组组合到另一个数组

来自分类Dev

使用Javascript将具有相同日期的数组中的对象组合到新的对象数组中

来自分类Dev

将每个数组的子元素组合到新的最终数组中-JavaScript

来自分类Dev

将每个数组的子元素组合到新的最终数组中-JavaScript

来自分类Dev

如何仅使用注释将具有相同类型的bean组合到一个数组中?

来自分类Dev

PHP:将子数组组合成新数组的问题

来自分类Dev

使用JS将具有匹配键值对的相似对象数组内的值数组组合

来自分类Dev

PHP,将每个数组项组合到先前的数组项

来自分类Dev

PHP将多个数组组合为一个实体

来自分类Dev

使用array_combine将数组的数组与PHP中的另一个数组组合

来自分类Dev

将内部数组组合成多维数组-PHP

来自分类Dev

如何将具有不同类型实体的两个数组组合成一个json对象?

来自分类Dev

具有重复值的数组组合函数(保留键)

来自分类Dev

如何将 2 个 NSDictionary Contain 数组组合到一个 NSMutableArray

来自分类Dev

将多个数组合并为单个数组

来自分类Dev

如何使用 PHP 将多个数组合并为单个数组

来自分类Dev

使用JQuery将数组数组合并为带有元素的单个数组

来自分类Dev

将数组与外部数组组合

来自分类Dev

将值组合到具有相同 id 的数组中用于 JSON 对象

Related 相关文章

  1. 1

    将2个数组组合到Xcode 6中的swift?swift?中,并带有相应的索引值)

  2. 2

    将培根流中的所有值组合到单个数组中

  3. 3

    将两个数组合并为具有公共值的单个数组

  4. 4

    将两个数组合并为具有公共值的单个数组

  5. 5

    如何拟合具有共享和非共享参数组合的多个数据集

  6. 6

    如何将多个数组组合成单个JSON对象

  7. 7

    PHP:将多个json的数据组合到数组

  8. 8

    将数组中的一个值组合到另一个数组的所有值 php

  9. 9

    php数组组合3个数组

  10. 10

    将数组与数组组合

  11. 11

    如何使用JavaScript将对象数组组合到另一个数组

  12. 12

    使用Javascript将具有相同日期的数组中的对象组合到新的对象数组中

  13. 13

    将每个数组的子元素组合到新的最终数组中-JavaScript

  14. 14

    将每个数组的子元素组合到新的最终数组中-JavaScript

  15. 15

    如何仅使用注释将具有相同类型的bean组合到一个数组中?

  16. 16

    PHP:将子数组组合成新数组的问题

  17. 17

    使用JS将具有匹配键值对的相似对象数组内的值数组组合

  18. 18

    PHP,将每个数组项组合到先前的数组项

  19. 19

    PHP将多个数组组合为一个实体

  20. 20

    使用array_combine将数组的数组与PHP中的另一个数组组合

  21. 21

    将内部数组组合成多维数组-PHP

  22. 22

    如何将具有不同类型实体的两个数组组合成一个json对象?

  23. 23

    具有重复值的数组组合函数(保留键)

  24. 24

    如何将 2 个 NSDictionary Contain 数组组合到一个 NSMutableArray

  25. 25

    将多个数组合并为单个数组

  26. 26

    如何使用 PHP 将多个数组合并为单个数组

  27. 27

    使用JQuery将数组数组合并为带有元素的单个数组

  28. 28

    将数组与外部数组组合

  29. 29

    将值组合到具有相同 id 的数组中用于 JSON 对象

热门标签

归档