2012-11-21 119 views
1

我有一個問題,我在下面有這個結果,我想刪除相同的時間戳。刪除陣列中的冗餘數據

示例結果:

Array 
(
[0] => [1341100800000, 0] 
[1] => [1341100800000,85] 
[2] => [1343779200000,54] 
[3] => [1343779200000, 0] 
) 

期待輸出

Array 
(
[0] => [1341100800000,85] 
[1] => [1343779200000,54] 
) 

我想使用然後爆炸SUBSTR函數來獲取價值。這裏是我想出了迄今爲止..

$explode = array(); 
    foreach($string_format as $key => $value) { 
     $explode[] = explode(',', substr($value, 1)); 
     if((isset($explode[0]) && $explode[0][0] == $explode[1][0])) { 
      unset($explode[0]); 
     } 
     //print_r($explode); 

    } 
+0

發生了什麼事的第二個值(0,85,0和54)?如果還有其他值,例如:0,85和95,該怎麼辦? – ariefbayu

+0

您的問題不完整。你如何選擇要保留的重複值? –

回答

2
+1

是的,如果沒有限制要保留哪個重複值(OP沒有提及),可以使用一個簡單的'array_unique($ the_array,SORT_NUMERIC)',利用PHP將字符串轉換爲數字和丟棄','之後的任何東西。 –

+0

這正是我用過的。 –

2

腳本:

foreach($string_format as $key => $value) { 
    $explode = explode(',', $value); 
    $unique[$explode[0]] = $value; 
} 

輸入:

$string_format = array('0' => '1341100800000, 0', 
'1' => '1341100800000,85', 
'2' => '1343779200000,54', 
'3' => '1343779200000, 0'); 

輸出:

$unique = 
Array 
(
    [1341100800000] => 1341100800000,85 
    [1343779200000] => 1343779200000, 0 
) 
0

這應該工作正常:)

$explode = array(); 
    $timestmp = array(); 

    foreach($string_format as $key => $value) { 
     $explode[$key] = explode(',', substr($value, 1)); 

     if(in_array($explode[$key][0], $timestmp)) { 
      unset ($explode[$key]); 
     } else { 
      $timestmp[]= $explode[$key][0]; 
     } 
    }