2017-06-06 9 views
-2

誰かが助けてくれることを願っています。Foreachループで重複を抑止しても値を追加する

私はこの配列を持っています(これは行の数が多いので唯一のスニペットです)。私は今日これを自分自身でやろうとしています。

array(628) { 
    [0]=> 
    array(3) { 
    [0]=> 
    string(7) "User 1" 
    [1]=> 
    string(2) "10" 
    [2]=> 
    string(2) "10" 
    } 
    [1]=> 
    array(3) { 
    [0]=> 
    string(10) "User 2" 
    [1]=> 
    string(2) "10" 
    [2]=> 
    string(2) "10" 
    } 
    [2]=> 
    array(3) { 
    [0]=> 
    string(9) "User 1" 
    [1]=> 
    string(2) "10" 
    [2]=> 
    string(1) "8" 
    } 
    [3]=> 
    array(3) { 
    [0]=> 
    string(7) "User 3" 
    [1]=> 
    string(2) "10" 
    [2]=> 
    string(1) "8" 
    } 
    [4]=> 
    array(3) { 
    [0]=> 
    string(10) "User 3" 
    [1]=> 
    string(2) "10" 
    [2]=> 
    string(2) "10" 
    } 
    [5]=> 
    array(3) { 
    [0]=> 
    string(9) "User 4" 
    [1]=> 
    string(2) "10" 
    [2]=> 
    string(2) "10" 
    } 
    [6]=> 
    array(3) { 
    [0]=> 
    string(6) "User 1" 
    [1]=> 
    string(2) "10" 
    [2]=> 
    string(1) "9" 
    } 
    [7]=> 
    array(3) { 
    [0]=> 
    string(9) "User 5" 
    [1]=> 
    string(2) "10" 
    [2]=> 
    string(2) "10" 
    } 
    [8]=> 
    array(3) { 
    [0]=> 
    string(9) "User 3" 
    [1]=> 
    string(2) "10" 
    [2]=> 
    string(2) "10" 
    } 
    [9]=> 
    array(3) { 
    [0]=> 
    string(7) "User 1" 
    [1]=> 
    string(2) "10" 
    [2]=> 
    string(2) "10" 
    } 
    [10]=> 
    array(3) { 
    [0]=> 
    string(9) "User 5" 
    [1]=> 
    string(1) "0" 
    [2]=> 
    string(1) "0" 
    } 

「ユーザー」と重複していますが、ユーザー#と呼ばれ​​ることはありません。重複は消えてしまいましたが、[1]の値にtogatherを追加し、[2]の値も一緒に追加しました。

情報が

おかげ

[0]=> 
 
    array(3) { 
 
    [0]=> 
 
    string(7) "User 1" 
 
    [1]=> 
 
    string(2) "40" 
 
    [2]=> 
 
    string(2) "37" 
 
    } 
 
    [1]=> 
 
    array(3) { 
 
    [0]=> 
 
    string(10) "User 2" 
 
    [1]=> 
 
    string(2) "10" 
 
    [2]=> 
 
    string(2) "10" 
 
    } 
 
    [2]=> 
 
    array(3) { 
 
    [0]=> 
 
    string(7) "User 3" 
 
    [1]=> 
 
    string(2) "40" 
 
    [2]=> 
 
    string(1) "38" 
 
    } 
 
    [3]=> 
 
    array(3) { 
 
    [0]=> 
 
    string(9) "User 5" 
 
    [1]=> 
 
    string(2) "10" 
 
    [2]=> 
 
    string(2) "10" 
 
    }

+1

希望の結果を投稿します – RomanPerekhrest

+2

"私は今これを自分自身でやろうとしています"と、あなたが試したことを分かち合ってください –

+0

私は希望の結果を追加しました – Darbs

答えて

0

はこのお試しください役立ちますことを願っています:

$arr = array (0 => array ('User 1', 10, 10), 
       1 => array ('User 2', 10, 10), 
       2 => array ('User 1', 10, 10), 
       3 => array ('User 2', 10, 10), 
       4 => array ('User 1', 10, 10), 
       5 => array ('User 3', 10, 10), 
); 
$result = array(); 

foreach($arr as $val){ 
    $key = array_search($val[0], array_column($result, 0)); 
    if($key !== false){ 
     $result[$key][1] = $result[$key][1] + $val[1]; 
     $result[$key][2] = $result[$key][2] + $val[2]; 
    }else{ 
     $result[] = $val; 
    } 
} 
echo "<pre>";print_r($result); 

Code Snippet

+0

これは素晴らしいです!何かを学んだ – Darbs

関連する問題