我试图根据键对数组的值求和。现在我已经提出了以下功能。不幸的是最后它扔了我注意:未定义的偏移量 我怎么能避免这个通知?除此之外,它正常工作。
$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 )
答案 0 :(得分:2)
那是因为行
$return[$k] += $v
第一次为每个索引如果未定义,则称为$return[$k]
。
在这里使用消音器是完全可以的:
@$return[$k] += $v.
或者,您可以每次检查是否定义了数组索引(可能会稍微减慢功能)。在$return[$k] += $v;
之前添加此行:
if (!isset($return[$k])) $return[$k] = 0;