2016-06-23 16 views
0

に連続した値を削除します私は以下の次の配列を持つ2つの次元配列PHP

$array = array(
    '90' => array (
    '11:00' => array(
    ' dept' => 297 
    ), 
    '11:01' => array(
     'dept' => 297 
    ), 
    '11:02' => array(
    ' dept' => 884 
    ), 
    '11:03' => array(
     'dept' => 297 
    ), 
    ), 
    '91' => array (
    '11:00' => array(
     'dept' => 297 
    ), 
    '11:01' => array(
     'dept' => 297 
    ), 
    ) 
); 

90と91は、ユーザIDです。今度は90と91キーの中で連続値を削除したい、例えばdept 297のように1回だけ返すべきです。 私が欲しいの出力は次のようになります。

$array = array(
    '90' => array (
    '11:00' => array(
     'dept' => 297 
     ), 
     '11:02' => array(
    ' dept' => 884 
    ), 
    '11:03' => array(
     'dept' => 297 
    ), 
), 
'91' => array (
    '11:00' => array(
     'dept' => 297 
    ), 
) 
); 

あなたは297が一度だけ返さDEPT IDを見ることができるように。

function filterSuccessiveDuplicates($array) 
{ 
    $result = array(); 
    $lastValue = null; 
    foreach ($array as $arr =>$value){ 
     $value = array_values($value); 
     foreach($value as $k => $v){ 

      if ($v['dept'] !== $lastValue) { 
      $result[$arr][$k] = $v; 
      } 
      $lastValue = $v['dept']; 
     } 
    } 
    return $result; 
} 
print_r(filterSuccessiveDuplicates($array)); 

しかし、その動作していない:

は、私は以下のコードを試してみました。出力は私が望むものではありません。どんな助け?

+0

useruseruserこれは297が繰り返されるため、正解ではありません。一度チェックしてください –

答えて

1

あなただけの最初のループの内側にあなたの$ lastValueを保つ...そして私は...それをテストarray_values()

function filterSuccessiveDuplicates($array) 
{ 
    $result = array(); 
    foreach ($array as $arr =>$value){ 
     $lastValue = null; 
     foreach($value as $k => $v){ 

      if ($v['dept'] !== $lastValue) { 
       $result[$arr][$k] = $v; 
      } 

      $lastValue = $v['dept']; 
     } 
    } 
    return $result; 
} 
print_r(filterSuccessiveDuplicates($array)); 

それがうまく機能することを除去するために必要。

ここに出力があります。

Array 
(
    [90] => Array 
     (
      [11:01] => Array 
       (
        [dept] => 297 
       ) 

      [11:02] => Array 
       (
        [ dept] => 884 
       ) 

      [11:03] => Array 
       (
        [dept] => 297 
       ) 

     ) 

    [91] => Array 
     (
      [11:00] => Array 
       (
        [dept] => 297 
       ) 

     ) 

) 
+0

なぜあなたはarray_valuesを削除したのですか? – useruseruser

+0

@useruseruserは297が繰り返されるため、正解ではありません。一度チェックしてください。 –

+0

@Anant、297は連続して繰り返してはいけません。質問を正しく読んでください。 –

関連する問題