У меня есть два многомерных массива, которые хранят координаты x и y. Я пытаюсь объединиться в один массив, сохраняя значение x, но добавляя вместе значения y.
Массив 1:
Array( [0] => Array ( [x] => 1327449600000 [y] => 5 ) [1] => Array ( [x] => 1327450500000 [y] => 1 )
Массив 2:
Array( [0] => Array ( [x] => 1327449600000 [y] => 1 ) [1] => Array ( [x] => 1327450500000 [y] => 3 )
Таким образом, общий результат:
Array( [0] => Array ( [x] => 1327449600000 [y] => 6 ) [1] => Array ( [x] => 1327450500000 [y] => 4 )
Любая помощь будет принята с благодарностью.
function add_array($a1, $a2) { $c = count($a1); for ($i=0;$i<$c;$i++) { if (isset($a2[$i]) && isset($a2[$i]['y'])) { $a1[$i]['y'] += $a2[$i]['y']; } } return $a1; }
Каждый из ваших исходных массивов является вектором; давайте позволяем им содержать произвольное количество точек (любого измерения):
function addPoints( vectorA, vectorB ) { if( vectorA.length != vectorB.length ) return []; var vectorC = []; for( var i=0; i<vectorA.length; ++i ) { var tmp = []; for( var j in vectorA[i] ) tmp.push( vectorA[i][j]+vectorB[i][j] ); vectorC.push( tmp ); } return vectorC; }
РЕДАКТИРОВАТЬ:
Я просто понял, что вы пишете PHP. Дайте мне секунду, чтобы конвертировать код, пожалуйста.
function addPoints( $veca, $vecb ) { if( count($veca)!=count($vecb) ) return array(); $vecc = array(); for( $i=0; $i<count($veca); ++$i ) { $tmp = array(); foreach( $veca[$i] as $key => $val ) $tmp[$key] = $val + $vecb[$i][$key]; $vecc[] = $tmp; } return $vecc; }