2013-09-24 40 views
2

如何檢查下一行是否重複。如果重複,它將移動到下一行。檢查下一行是否重複

例子:

1st row: 1900 
2nd row: 1900 
3rd row: 2000 

如何MySQL和PHP可以做以下結果:

1st row: 1900 
2nd row: 2000 
3rd row: 1900 

這是可能的或任何可能的代碼?

下一件事我該如何移動重複行?

+1

值請提供代碼的一個簡單的問題,你現在有 –

回答

2

可以最後一行存儲在最後臨時變量$和foreach循環做到這一點:

$last = ''; 
foreach ($array as $row){ 
    if ($row== $last){ 
     continue; 
    } else { 
     $returnArray[] = $row; 
    } 
    $last = $row; 
} 
var_dump($returnArray); 
1

您需要堆疊具有唯一值的第二個數組。

<?php 
$array = array(1900,1900,2000); 
$array2 = array(); 

foreach ($array as $val) { 
    if (!in_array($val, $array2)) { 
     $array2[] = $val; 
    } 
} 

print_r($array2); 

見鍵盤:http://codepad.org/X8jtnEkq

如果要追加到數組結束副本,上面的腳本後,使用array_merge($array2, $array);

<?php 
$array = array(1900,1900,2000); 
$array2 = array(); 

foreach ($array as $key => $val) { 
    if (!in_array($val, $array2)) { 
     $array2[] = $val; 
     unset($array[$key]); 
    } 
} 
$array = array_merge($array2, $array); 
print_r($array); 

演示http://codepad.org/tRC6P2Go

+0

喜丹,怎麼樣重複的號碼?它顯示Array([0] => 1900 [1] => 2000)。我想要的是重複將包括也將移動到第三次迭代就像這個例子:Array([0] => 1900 [1] => 2000 [2] => 1900) – Shudmeyer

+0

@EdmarCruz看到我的更新 – DanFromGermany

+0

謝謝你男人你救我一天! – Shudmeyer

1

你可以使用array_unique獲得獨特的結果,然後做初步和uniquified陣列以獲得之間的array_diff被加倍使用他們的SQL查詢ID來整理該表:

$uniquified = array_unique($initalResults); 
$diff = array_diff($initalResults, $uniquified); 
+0

只是注意到,你想實現一些不同 – harpax

0

這個問題是基本的編程,你通常有這樣的問題,在單向的第一週。

array_diff不會幫你,它比較兩個不同的數組,而你正在尋找比較數組中的前一個元素。

同樣的原理適用於它來自mysql還是數組。

另外,問自己這個問題,這個數據是否需要先排序?

嘗試此

<?php 

$my_array = array(1900,1900,2000); 

$tmp = null ; 

for($i = 0 ; $i<count($my_array) ; $i++) { 
    if($my_array[$i] != $tmp){ 
     echo "\nValue $i is different to the last one, 
       should I do extra stuff here ?"; 
    } else { 
     echo "\nValue $i is the same as the last one and equals $tmp"; 
    } 
    $tmp = $my_array[$i] ; 

} 


?> 

上述代碼的輸出是..

Value 0 is different to the last one, should I do extra stuff here ? 
Value 1 is the same as the last one and equals 1900 
Value 2 is different to the last one, should I do extra stuff here ? 

確定該動作是否是第一項出現的是檢查$ I