Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Merging two multi-dimensional arrays using key and adding values

I want to merge two array's using key(product_id) and adding that values(usage). Array 1

Array
(
    [0] => Array
        (
            [name] => Reschedule A Service 
            [usage] => 1
            [product_id] => 8
        )

    [1] => Array
        (
            [name] => Adding An Image
            [usage] => 1
            [product_id] => 5
        )

    [2] => Array
        (
            [name] => Each Calendar Event
            [usage] => 1
            [product_id] => 14
        )

)

Array 2

Array
(
    [0] => Array
        (
            [name] => Adding An Image
            [usage] => 1
            [product_id] => 5
        )

    [1] => Array
        (
            [name] => Schedule A Service
            [usage] => 3
            [product_id] => 11
        )

    [2] => Array
        (
            [name] => Each Calendar Event
            [usage] => 2
            [product_id] => 14
        )

    [3] => Array
        (
            [name] => Sales Performance Dashboard
            [usage] => 2
            [product_id] => 30
        )

    [4] => Array
        (
            [name] => Quote
            [usage] => 1
            [product_id] => 32
        )

)

I need an out put like this merging and adding usage values.

Array
(
    [0] => Array
        (
            [name] => Adding An Image
            [usage] => 2
            [product_id] => 5
        )

    [1] => Array
        (
            [name] => Schedule A Service
            [usage] => 3
            [product_id] => 11
        )

    [2] => Array
        (
            [name] => Each Calendar Event
            [usage] => 3
            [product_id] => 14
        )

    [3] => Array
        (
            [name] => Sales Performance Dashboard
            [usage] => 2
            [product_id] => 30
        )

    [4] => Array
        (
            [name] => Quote
            [usage] => 1
            [product_id] => 32
        )

    [5] => Array
        (
            [name] => Reschedule A Service 
            [usage] => 1
            [product_id] => 8
        )

)

This is my code for creating arrays


    foreach($query->rows as $product){

     $top_products[]=array(
        'name'=>$product['name'],
        'usage'=>$product['pusage'],
        'product_id'=>$product['product_id']
     );

    }


    foreach($query_2->rows as $product){        

         $top_point_products[]=array(
           'name'=>$product['name'],
           'usage'=>$product['p_usage'],
           'product_id'=>$product['product_id']
         );

    }

like image 709
gowtham4chat Avatar asked Sep 10 '26 03:09

gowtham4chat


1 Answers

$first =array(

    array(
        "name" => "Reschedule A Service",
        "usage" => 1,
        "product_id" => 8
    ),
    array(
        "name" => "Adding An Image",
        "usage" => 1,
        "product_id" => 5
    ),
    array(
        "name" => "Each Calendar Event",
        "usage" => 1,
        "product_id" => 14
    )
    );
$second =array(


    array(
        "name" => "Adding An Image",
        "usage" => 1,
        "product_id" => 5
    ),
    array(
        "name" => "Schedule A Service",
        "usage" => 3,
        "product_id" => 11
    ),
    array(
        "name" => "Each Calendar Event",
        "usage" => 2,
        "product_id" => 14
    ),
    array(
        "name" => "Sales Performance Dashboard",
        "usage" => 2,
        "product_id" => 30
    ),
    array(
        "name" => "Quote",
        "usage" => 1,
        "product_id" => 32
    )
);

$result = array_unique(array_merge($first,$second), SORT_REGULAR);

Use array_unique & array_merge

like image 75
Aditya Shah Avatar answered Sep 11 '26 15:09

Aditya Shah