首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ID相同的合并数组

ID相同的合并数组
EN

Stack Overflow用户
提问于 2018-11-26 20:17:37
回答 1查看 144关注 0票数 1

我有以下数组

代码语言:javascript
复制
Array ( [id] => 1 [name] => [cat_name] => Food & Beverage [quantity] => 1
 [price] => 25 [image] => books_image/calories_fat_carbohydrate.png )

 Array ( [id] => 2 [name] => [cat_name] => Food & Beverage [quantity] => 5 
[price] => 38 [image] => books_image/the_law_relating_to_food.png )

 Array ( [id] => 3 [name] => [cat_name] => Food & Beverage [quantity] => 5 
[price] => 19 [image] => books_image/it_starts_with_food.png )

 Array ( [id] => 3 [name] => [cat_name] => Food & Beverage [quantity] => 2
 [price] => 19 [image] => books_image/it_starts_with_food.png )

在$_SESSION‘’cartitem‘对象中,关键是id

我的问题是,我与id=3有重复,我想要的输出是

代码语言:javascript
复制
Array ( [id] => 1 [name] => [cat_name] => Food & Beverage [quantity] => 1
 [price] => 25 [image] => books_image/calories_fat_carbohydrate.png )

 Array ( [id] => 2 [name] => [cat_name] => Food & Beverage [quantity] => 5 
[price] => 38 [image] => books_image/the_law_relating_to_food.png )

 Array ( [id] => 3 [name] => [cat_name] => Food & Beverage [quantity] => 7 
[price] => 19 [image] => books_image/it_starts_with_food.png )

基本上是通过相同的id合并并添加quantity字段。在php中有一种简单的方法可以做到这一点吗?

我不想删除重复的。这些副本对我来说很重要,因为它们有我需要添加的数量。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-26 21:04:58

给你:

代码语言:javascript
复制
// DEFINE SORTING CRITERIA
function sort_ids($a, $b) {
    return $a['id'] > $b['id'];
}
// DEFINE ARRAY OF ARRAYS
$arrays = array(
    array( 'id' => 1, 'name' => '', 'cat_name' => 'Food & Beverage', 'quantity' => 1,
    'price' => 25, 'image' => 'books_image/calories_fat_carbohydrate.png' ),

    array( 'id' => 2, 'name' => '', 'cat_name' => 'Food & Beverage', 'quantity' => 5, 
   'price' => 38, 'image' => 'books_image/the_law_relating_to_food.png' ),

    array( 'id' => 3, 'name' => '', 'cat_name' => 'Food & Beverage', 'quantity' => 5, 
   'price' => 19, 'image' => 'books_image/it_starts_with_food.png' ),

    array( 'id' => 3, 'name' => '', 'cat_name' => 'Food & Beverage', 'quantity' => 2,
    'price' => 19, 'image' => 'books_image/it_starts_with_food.png' ),

    array( 'id' => 1, 'name' => '', 'cat_name' => 'Food & Beverage', 'quantity' => 1,
    'price' => 25, 'image' => 'books_image/calories_fat_carbohydrate.png' ),

    array( 'id' => 2, 'name' => '', 'cat_name' => 'Food & Beverage', 'quantity' => 5, 
   'price' => 38, 'image' => 'books_image/the_law_relating_to_food.png' )
);
// SORT ARRAY OF ARRAYS FIRST
usort($arrays, 'sort_ids');
// MERGE DUPLICATES
$record_number = count($arrays);
for ($i=0; $i<$record_number; $i++) {
    // if this is not the first loop and if this is a duplicate
    if(isset($temp_id) && $temp_id == $arrays[$i]['id']) {
        // add quantity of the previous array here
        $arrays[$i]['quantity'] += $temp_quantity;
        // unset previous array
        unset($arrays[$i-1]);
    }
    $temp_id = $arrays[$i]['id'];
    $temp_quantity = $arrays[$i]['quantity'];
}
// PRINT ARRAY OF ARRAYS
echo '<pre>';
print_r($arrays);
echo '</pre>';
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53488400

复制
相关文章

相似问题

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