2017-12-29 7 views
-2

私は、日付、ログイン名、時刻(時間の長さ)で構成される配列の配列を持っています。私は、日付とログインの両方が互いに同じであれば、それは一緒に時間を追加するようにそれを作るしようとしている多次元配列の特定の値を連結する

[0]=> 
    [0]=> "2015-09-06" 
    [1]=> "user1" 
    [2]=> "8947226" 
[1]=> 
    [0]=> "2015-09-06" 
    [1]=> "user1" 
    [2]=> "6664923" 
[2]=> 
    [0]=> "2015-09-24" 
    [1]=> "user2" 
    [2]=> "654654" 

:ここでは、それは漠然と次のようになります。だから、次のようになります。私は私の主な問題は、彼らが必ずしも日付またはログイン順になりませんので、配列を検索する方法だと思います

[0]=> 
    [0]=> "2015-09-06" 
    [1]=> "user1" 
    [2]=> "15612149" 
[1]=> 
    [0]=> "2015-09-24" 
    [1]=> "user2" 
    [2]=> "654654" 

、それらはすべてランダムです。
まず、私は、彼らがためのいくつかの並べ替えになるだろうと思ったので、私はこれをやっていた:

if ($i != 0) { 
     if ($date == $bigArray[$prevIndex][0] && $login == $bigArray[$prevIndex][1]) { 

      $bigArray[$prevIndex][2] += $time; 

     } else { 

      array_push($bigArray, array($date, $login, $time)); 

      $prevIndex++; 

     } 

    } else { 

     array_push($bigArray, array($date, $login, $time)); 


    } 

しかし、彼らはランダムな順序になっているので、それが動作しません。私は最初に配列をソートしようとしましたが、それは動作しません。

+1

これまでに行ったことはありますか?あなたのコードを投稿してください。 – Bluetree

答えて

0

これを行う方法はありますが、おそらくそれが最善ではありません。

<?php 

$arr = []; 
$arr[0] = ["2015-09-26", "user1", "8947226"]; 
$arr[1] = ["2015-09-26", "user1", "6664923"]; 
$arr[2] = ["2015-09-24", "user2", "654654"]; 

// Variable to store the new values. 
$arr2 = []; 

// Scrolls through the array 
foreach($arr as $ar) { 

    // Creates a key to identify date and login 
    $key = md5($ar[0].$ar[1]); 

    // Checks whether the value is already in the variable $arr2 
    if (isset($arr2[ $key ])) { 

     // If so, adds the values in ms 
     $arr2[ $key ][2] += $ar[2]; 
    } else { 
     $arr2[ $key ] = $ar; 
    } 
} 

// Use the array_values to display only the values (without displaying the $key); 
var_export(array_values($arr2)); 
+0

これはうまくいってくれました。 –