如何检查下一行是否重复。如果重复,它将移动到下一行。
示例:
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);
?>
接下来我该如何移动重复的行?
答案 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);
答案 2 :(得分:1)
您可以使用array_unique获取唯一结果,然后在初始数组和未提供数组之间执行array_diff以获取加倍的ID,以便将它们用于sql-query以整理该表:
$uniquified = array_unique($initalResults);
$diff = array_diff($initalResults, $uniquified);
答案 3 :(得分:1)
答案 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的值