【问题标题】:PHP associative array filtering [closed]PHP关联数组过滤
【发布时间】:2017-11-23 15:02:14
【问题描述】:

我有一个关联数组,由于键中的重复元素,我想对重复值求和..

为了更好地解释:

    array:6 [
  0 => array:4 [
    "itemsName" => "H&M Chemise#15 M.Colors Orange x Grey '17(red-l)"
    "itemsQuantity" => 3
    "itemsCode" => 101
    "itemsBarcode" => "101|60|78"
  ]

  1 => array:4 [
    "itemsName" => "H&M Chemise#15 M.Colors Orange x Grey '17(green-l)"
    "itemsQuantity" => 1
    "itemsCode" => 101
    "itemsBarcode" => "101|15|78"
  ]

  2 => array:4 [
    "itemsName" => "Polo Cap Multi Colors B-Logo(red-l)"
    "itemsQuantity" => 2
    "itemsCode" => 104
    "itemsBarcode" => "104|60|78"
  ]

  3 => array:4 [
    "itemsName" => "Polo Cap S-Logo White(green-l)"
    "itemsQuantity" => 1
    "itemsCode" => 107
    "itemsBarcode" => "107|15|78"
  ]

  4 => array:4 [
    "itemsName" => "H&M Chemise#15 M.Colors Orange x Grey '17(green-l)"
    "itemsQuantity" => 2
    "itemsCode" => 101
    "itemsBarcode" => "101|15|78"
  ]

  5 => array:4 [
    "itemsName" => "H&M Chemise#15 M.Colors Orange x Grey '17(red-l)"
    "itemsQuantity" => 3
    "itemsCode" => 101
    "itemsBarcode" => "101|60|78"
  ]
]

问题:

你会发现条码01|15|78在数组索引4和1中有重复,所以我想总结一下索引中的数量4 和 1 并使它们成为一个数组,它将是:

[ "itemsName" => "H&M Chemise#15 M.Colors Orange x Grey '17(green-l)" "itemsQuantity" => 3 "itemsCode" => 101 "itemsBarcode" => "101|15|78" ]

【问题讨论】:

  • 到目前为止你尝试过什么代码?

标签: php arrays algorithm loops


【解决方案1】:

假设您的数组保存在变量 $cart 下。

您可以使用 PHP 函数 array_reduce 遍历数组的每个项目,对其进行过滤并编辑其他索引的值。

$cart = array_reduce($cart, function($newCart, $item){
    $barCode = $item['itemsBarcode'];
    if (array_key_exists($barCode, $newCart)) {
        $newCart[$barCode]['itemsQuantity'] += $item['itemsQuantity'];
    } else {
        $newCart[$barCode] = $item;
    }
    return $newCart;
}, []);

如果您需要简单的数字数组键(例如通过 for 循环进行循环),请在之后使用 $cart = array_values($cart);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-10
    • 1970-01-01
    • 2021-05-10
    • 1970-01-01
    • 2020-09-19
    相关资源
    最近更新 更多