使用其他键[close]对两个数组的键值求和

Array
(
    [0] => Array
        (
            [amount] => 8000
            [date] => 2015-04-01
        )

    [1] => Array
        (
            [amount] => 5000
            [date] => 2015-04-02
        )

    [2] => Array
        (
            [amount] => 5000
            [date] => 2015-04-10
        )

    [3] => Array
        (
            [amount] => 25000
            [date] => 2015-04-20
        )

)


Array
(
    [0] => Array
        (
            [date] => 2015-04-01
            [amount] => 1000
        )

    [1] => Array
        (
            [date] => 2015-04-02
            [amount] => 5000
        )

    [2] => Array
        (
            [date] => 2015-04-03
            [amount] => 2000
        )

    [3] => Array
        (
            [date] => 2015-04-10
            [amount] => 2000
        )

)

I have two arrays with keys and values. sum the 'amount' key if 'date' key values is same

Expected output:

Array
(
    [0] => Array
        (
            [date] => 2015-04-01
            [amount] => 9000
        )

    [1] => Array
        (
            [date] => 2015-04-02
            [amount] => 10000
        )

    [2] => Array
        (
            [date] => 2015-04-03
            [amount] => 2000
        )

    [3] => Array
        (
            [date] => 2015-04-10
            [amount] => 7000
        )
    [4] => Array
        (
            [date] => 2015-04-20
            [amount] => 25000
        )
)

This is your solution -

<?php
$array_result = array();

$array1=array(  // your first array

0 => Array
        (
            'amount' => 8000,
            'date' => '2015-04-01'
        ),

1 => Array
    (
        'amount' => 5000,
        'date' => '2015-04-02'
    ),

2 => Array
    (
        'amount' => 5000,
        'date' => '2015-04-10'
    ),

3 => Array
    (
        'amount' => 25000,
        'date' => '2015-04-20'
    )
);

$array2=array(  // your second array

0 => Array
        (
            'date' => '2015-04-01',
            'amount' => 1000
        ),

1 => Array
    (
        'date' =>'2015-04-02',
        'amount' => 5000
    ),

2 => Array
    (
        'date' => '2015-04-03',
        'amount' => 2000
    ),

3 => Array
    (
        'date' => '2015-04-10',
        'amount' => 2000
    )
);

$array_result = $array2; // default value of result will be array2

function recursive_array_search($needle,$haystack) {
    foreach($haystack as $key=>$value) {
        $current_key=$key;
        if($needle===$value OR (is_array($value) && recursive_array_search($needle,$value) !== false)) {
            return $current_key;
        }
    }
    return false;
}

foreach( $array1 as $k1=>$val1  ) {
    $is_exist = recursive_array_search($val1['date'], $array_result);
    if( $is_exist !== false )
    {
        $array_result[ $is_exist ]['amount']+=$val1['amount'];
    } else {
        $array_result[]=$val1;
    }
}

echo "<pre>"; print_r( $array_result );

?>