2012-04-27 13 views
1

私はxとyの座標を格納する2つの多次元配列を持っています。2次元配列と合計値をマージする

アレイ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 
    ) 

任意の助けいただければ幸い。

+0

2つの配列が同じ長さではありますか? – MrCode

+0

配列1のすべてのX要素は配列2で使用できますか? – j4kes

+0

はい、それらは同じ長さであり、X要素は常に同じであるべきですが、保証されません。 – StephenD

答えて

0
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; 
} 
+0

このコード専用の回答で説明してください。必ず教育の意思で答えてください。 – mickmackusa

0

元の配列はそれぞれベクトルです。のは、彼らが(任意の次元の)ポイントの任意の量を含めることができましょう:

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; 
} 

EDIT:

私はちょうどあなたが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; 
} 
+0

私はy値を合計しながらx値を保存するので、実際にはもう一方の答えを選択しました。しかし、あなたの例はそれを説明するのにはるかに明確でした。ありがとうございました。 – StephenD