求和相同键的数组值

时间:2014-01-02 08:35:55

标签: php arrays

我试图根据键对数组的值求和。现在我已经提出了以下功能。不幸的是最后它扔了我注意:未定义的偏移量 我怎么能避免这个通知?除此之外,它正常工作。     

$array1 = array('1' => '1', '2' => '2', '3' => '3');
$array2 = array('2' => '10', '3' => '10', '4' => '10');
//$array3 = array('3' => '1', '4' => '2', '5' => '3');
$array = array_sum_values($array1, $array2);
print_r($array);

/**
 * Sums the values of the arrays be there keys (PHP 4, PHP 5) 
 * array array_sum_values ( array array1 [, array array2 [, array ...]] )
 */
function array_sum_values() {
    $return = array();
    $intArgs = func_num_args();
    $arrArgs = func_get_args();
    if ($intArgs < 1)
        trigger_error('Warning: Wrong parameter count for array_sum_values()', E_USER_WARNING);

    foreach ($arrArgs as $arrItem) {
        if (!is_array($arrItem))
            trigger_error('Warning: Wrong parameter values for array_sum_values()', E_USER_WARNING);
        foreach ($arrItem as $k => $v) {
            $return[$k] += $v;
        }
    }
    return $return;
}

上面的输出是,

Notice: Undefined offset: 1 in E:\xampp\htdocs\TestPHP\index.php on line 24

Notice: Undefined offset: 2 in E:\xampp\htdocs\TestPHP\index.php on line 24

Notice: Undefined offset: 3 in E:\xampp\htdocs\TestPHP\index.php on line 24

Notice: Undefined offset: 4 in E:\xampp\htdocs\TestPHP\index.php on line 24
Array ( [1] => 1 [2] => 12 [3] => 13 [4] => 10 )

1 个答案:

答案 0 :(得分:2)

那是因为行

$return[$k] += $v
第一次为每个索引

如果未定义,则称为$return[$k]。 在这里使用消音器是完全可以的:

@$return[$k] += $v.

或者,您可以每次检查是否定义了数组索引(可能会稍微减慢功能)。在$return[$k] += $v;之前添加此行:

if (!isset($return[$k])) $return[$k] = 0;