检查下一行是否重复

时间:2013-09-24 09:40:55

标签: php mysql duplicates

如何检查下一行是否重复。如果重复,它将移动到下一行。

示例:

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

mysql和php如何才能完成这些结果:

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

这可能或任何可能的代码吗?

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

$checkDuplicates = array_diff($array);

print_r($checkDuplicates);

?>

接下来我该如何移动重复的行?

5 个答案:

答案 0 :(得分:2)

您可以将最后一行存储在临时变量$ last中,并在foreach循环中执行以下操作:

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

答案 1 :(得分: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

答案 2 :(得分:1)

您可以使用array_unique获取唯一结果,然后在初始数组和未提供数组之间执行array_diff以获取加倍的ID,以便将它们用于sql-query以整理该表:

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

答案 3 :(得分:1)

你可以使用array_unique

http://php.net/manual/en/function.array-unique.php

提取唯一记录,然后提取array_diff以提取重复记录

答案 4 :(得分: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的值