2016-10-20 12 views
-1

あなたのためにもう一つのPHPがあります!PHP同じIDの値を追加する

同じ列名で異なる値を持つ2つのテーブルから2つの配列を取得しています。両方のテーブルを呼び出してデータを配列にダンプするクエリを作成しました。私が得る値は次のとおりです。 - :私はこれを行うに行くかどう

Array { 
    [0] { 
     [id] => 23, 
     [count] => 300 
    }, 
    [1] { 
     [id] => 43, 
     [count] => 600 <---- Notice how this has been added together 
    }, 
    [2] { 
     [id] => 78, 
     [count] => 55 
    } 
} 

-

Array { 
    [0] { 
     [id] => 23, 
     [count] => 300 
    }, 
    [1] { 
     [id] => 43, 
     [count] => 400 
    } 
} 

Array { 
    [0] { 
     [id] => 43, 
     [count] => 200 
    }, 
    [1] { 
     [id] => 78, 
     [count] => 55 
    } 
} 

私が何をしたいのか、このですか?

+1

とあなたがこれまでにしてみてくださいでした:

は次のようになりますか? – Dekel

+0

普通のarray_mergeとarray_push –

+1

素晴らしいコードを追加してください...これはあなたに何が間違っているかを簡単に伝えるでしょう – Dekel

答えて

0

array_mergeは最初は良いオプションのように思えるかもしれませんが、数字キーをマージするのではなく、単に追加するだけです。

このマージのための独自の関数を作成するのが最も簡単です。

function merge_array($first, $second) 
{ 
    $result = array(); 
    append_array($result, $first); 
    append_array($result, $second); 

    return $result; 
} 

function append_array(&$result, $array) 
{ 
    foreach($array as $entry){ 
     $index = get_element_index($result, $entry); 
     if($index < 0){ 
      // Add as normal 
      $result[] = $entry; 
     }else{ 
      $result[$index]['count'] = $result[$index]['count'] + $entry['count']; 
     } 

    } 
} 

function get_element_index($array, $element) 
{ 
    for($i = 0; $i < count($array); $i++){ 
     if($entry['id'] == $element['id']){ 
      return $i; 
     } 
    } 
    return -1; 
} 
関連する問題