【问题标题】:sum key values of two arrays by using other key [closed]使用其他键对两个数组的键值求和 [关闭]
【发布时间】:2015-04-27 06:43:37
【问题描述】:
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
        )

)

我有两个包含键和值的数组。如果“日期”键值相同,则对“金额”键求和

预期输出:

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
        )
)

【问题讨论】:

标签: javascript php arrays


【解决方案1】:

这是你的解决方案 -

<?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 );

?>

【讨论】:

  • 谢谢你 prakash 它的工作,但他们不能不明智地显示订单(日期)。
  • 请投票。您需要创建另一个数组,其中日期为键,金额为值,然后按日期排序,它将为您提供所需的结果。
猜你喜欢
  • 2012-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
  • 2017-11-15
  • 1970-01-01
  • 2013-01-05
  • 2011-08-11
相关资源
最近更新 更多