2016-03-05 69 views
0

如何能過濾出數組項如何過濾出數組條目?

Array 
(
    [0] => A 
    [1] => A 
    [2] => A 
    [3] => B 
    [4] => A 
    [5] => B 
) 
etc.... 

我想獲得這樣的結果

Array 
    (
     [0] => A 
     [1] => B 
     [2] => A 
     [3] => B 
    ) 

,我需要使用array_filter(),只是比較每個值刪除重複secquence

+2

你有沒有試過解決這個問題? – Rizier123

回答

0

如果你想這樣做,作爲一個人,這個過程很簡單:

  • 看當前值。
  • 檢查最後一個值。
  • 如果它們匹配,請將其刪除。

使用代碼的過程是一樣的:

//the initial data 
$test = ["A", "A", "A", "B", "A", "B"]; 

//remember the last value 
$last = null; 

foreach($test as $key => $value){ 
    //is there a last value? does it match the current value? 
    if($last AND $last == $value){ 
     //then remove it 
     unset($test[$key]); 
     continue; 
    } 

    //remember the last value 
    $last = $value; 
} 

var_dump($test); 

輸出:

array(4) { 
    [0] => 
    string(1) "A" 
    [3] => 
    string(1) "B" 
    [4] => 
    string(1) "A" 
    [5] => 
    string(1) "B" 
} 

正如Mark points out可以使用array_filter()做同樣的事情。

在你只需要聲明$last變量as static,因爲你只希望它是null第一次函數被調用這種情況下,你希望它保持它的價值在多次調用該函數。

0

很簡單與前一個

$data = ['A','A','A','B','A','B']; 

$data = array_filter(
    $data, 
    function($value) { 
     static $previous = null; 
     $return = $value != $previous; 
     $previous = $value; 
     return $return; 
    } 
); 

var_dump($data); 

Demo